TDDのプロセス
機能テスト
ユニットテスト
。「テスト単位/ライト・コード」サイクル
復興
全体の処理図参照:
最初にすべてのテストを書く、テストの実行が失敗したを見て、その後、最小限のコードを記述し、いくつかの進歩を遂げ、その後、成功するまでテストループを実行します
機能テストがある場合、ユニットテスト、プログラミングを介して、このコードを行う高レベルの観点のサイクルとして機能テストがあります。
機能テストは、アプリケーションが実行されているかどうかの最終的な裁判官であり、ユニットテストは、開発プロセス全体のための補助具であります
次に例を示します。
WebページのTDD PythonのDjangoの開発を使用して、タイトルページがfirst_TDDあり、それは、タグH1、H1コンテンツのHello Worldが含まれています
1つのアプリのHelloWorldのを備えジャンゴを作成
機能テストtest1.pyを作成します。
以下からのセレンのインポートwebdriverを インポートunittestの :Myunittestクラス(たunittest.TestCase) セットアップ(自己)DEF:#テストは、前に実行されます self.browser = webdriver.Firefox() DEFティアダウン(自己):#テストは後に実行 self.browser.quit () DEF test_can_start_a_list_and_retrieve_it_later(自己):本試験方法#1 self.browser.get( "http://127.0.0.1:8000") self.assertIn( "first_TDD"、self.browser.title)#アサーション head_text =セルフ。.browser.find_element_tag_name( 'H1')テキスト self.assertIn( "Hello World"の、head_text)アサーション#1 #self.fail( "完了検査") #のテストの終了を事前に __name__ IF __ == '__ MAIN__': unittest.main(警告=「無視」)#は、テストプログラムのユニットテストを開始します
機能テスト・エラーを実行します。
AssertionErrorが:には見られない「first_TDD」「ジャンゴ:締め切りと完璧主義のためのWebフレームワーク」
Tests.pyは(ユニットテストを運ぶ)HelloWorldの下修飾します
インポートのTestCaseはからdjango.test django.urlsからは解決のインポート Helloworld.viewsインポートからこんにちは インポートrender_to_stringのdjango.template.loaderにから クラスHomepageTest(テストケース): DEFのtest_root_url_resolves_to_home_page_view(セルフ): 見つけ=解決( '/')#テストサイトのURL関係がそうするかどうか(ここではパスを持つサイトです) あなたはhome_pageの名前の関数を見つけることができるかどうself.assertEqual(found.func、こんにちは)#参照 :DEFのtest_home_page_returns_correct_html(自己を) Respose = self.client.get(「/」) self.assertTemplateUsed(respose、 'hello.html') #のテンプレートがレンダリングされる検出応答
AttributeError:モジュールのHelloworld.viewsは '「こんにちは」は属性を持っていません
HelloWorldの中views.py変更
デフこんにちは(リクエスト): パス
による機能試験までライトユニットテストサイクルを介してコード
最終テンプレート新しいhello.htmlのコードで
<!DOCTYPE HTML> <HTML LANG = "EN"> <HEAD> <メタ文字コード= "UTF-8"> <タイトル> first_TDD </ TITLE> </ HEAD> <BODY> <H1>のHello World </ H1> </ BODY> </ HTML>
HelloWorldの次views.py
django.shortcutsインポートからレンダリング こんにちはDEF(要求): リターンは(要求、 'hello.html')をレンダリング
first_TDD次urls.py
django.conf.urlsインポートURLから HelloWorldのインポートビューから urlpatterns = [ URL(R '^ $'、views.hello) ]
が運営する最終のpython manage.pyテストユニットテスト
0.007sで2つのテストを実施しました
OK
機能テストのpython test1.pyにより、
-------------------------------------------------- -------------------
7.483sで実行した1つの試験
OK
開発プロセス全体の完了
注:次のように私はsettings.pyを修正することなく作成したpycharmと結合アプリをDjangoに、他の人が変更しなければならないかもしれません
= INSTALLED_APPS [
'django.contrib.admin'、
'django.contrib.auth'、
'django.contrib.contenttypes'、
'django.contrib.sessions'、
'django.contrib.messages'、
'django.contrib.staticfiles' 、
「HelloWorldのは」
]
レジスタを作成するためのプロジェクトにあなたのアプリを回すことができます