Django Framework - Test


テストの自動化


テストセットを作成すると、アプリケーションを変更するときに手動でテストする必要がなく、コードが予想通りに実行されることを確認できます.

モデル-エラー認識

$ python manage.py shell
以上のコマンドでshellを実行してテストエンコードを行います
>>> import datetime
>>> from django.utils import timezone
>>> from polls.models import Question
>>> future_question = Question(pub_date=timezone.now() + datetime.timedelta(days=30))
>>> future_question.was_published_recently()
>>> True
Questionモデルに将来の時間を入力し、事前に作成したwas published new()関数を使用してチェックします.

モデル→テストの作成


アプリケーションフォルダのテスト.pyファイルにテストするコードを配置します.
TestCaseを継承するクラスの作成
time:将来の時間ストレージ変数
future question:将来の時間をpub dateのQuestionオブジェクト変数とする
self.assertis(テストする関数、必要な戻り値):書かれた戻り値でない場合、エラーが発生します.
pythonでのself
selfの値はPythonが自動的に自分のインスタンスに渡すものである.

テストの実行

$ python manage.py test 앱이름
次の結果を表示し、エラーを修正します.

View Test


Djangoは、テストクライアントクラスClientを提供し、ビューレベルでコードと対話するユーザをシミュレートする.このテストクライアントをテストします.pyまたはshellで使用できます.

View Test - shell

$ python manage.py shell

>>> from django.test.utils import setup_test_environment
>>> setup_test_environment()

>>> from django.test import Client
>>> client = Client()
以上の操作で、Viewでのテスト環境構成が完了しました.
setup test environment():テンプレートレンダラーをインストールします.このメソッドはテストDBを設定しないため、テストは現在使用されているデータベースで行われます.
クライアント()クライアントクラスのテスト
>>> response.status_code
404
>>> from django.urls import reverse
>>> response = client.get(reverse('polls:index'))
>>> response.status_code
200
>>> response.content
b'\n  <ul>\n  \n   <li><a href="/polls/1/">What&#x27;s up?</a></li>\n   \n </ul>\n\n'
>>> response.context['latest_question_list']
<QuerySet [<Question: What's up?>]>
status code:現在のページのステータス
content:出力ページの文字列
context[「kwargs」]:パラメータ辞書資料を開く

View Test - tests.py


assertEqual():1番目のパラメータ値が2番目のパラメータ値と異なる場合、テストに失敗します.
assertContains(response, text, status_code=200):Responseインスタンスは、指定されたstatus codeを生成し、応答の内容にテキストが表示されることを確認します.テストに失敗しました(結果が異なる場合)
assertQuerysetEqual(QuerySet, values):2つのパラメータ値のクエリーセットが異なる場合、テストに失敗します.

more Test