djangoユニットテスト
2025 ワード
djangoのユニットテストはdoc testとunit testの2種類に分けられる.
ここではunit testのみを説明する.
公式ドキュメントです.https://docs.djangoproject.com/en/dev/topics/testing/overview/
ポイントは次のとおりです.
私たちのプロジェクトモジュールにtestを構築します.py(これは重要です.djangoはデフォルトでモジュールのtest.pyファイルをロードしてテストを実行します).定義モジュールはdjangoを継承する.test.TestCase.pythonは、定義したモジュールのtestで始まるメソッドを自動的にロードします.
完了後、コマンドを実行
デフォルトでは、djangoのテストプロセスでテストデータベースが作成され、testが実行されます.テストデータベースを削除します.
データベースの作成に時間がかかるため、卵が痛い場所です.
この場合、2つの解決策があります.
1.メモリ・データベースsqliteを使用します.settings.pyでの構成
これにより、同じようにテストデータベースが作成されますが、時間が少なくなります.
2.djangoのtestrunnerを使用します.settings.pyでの構成
これにより、同じようにデータベースも作成されますが、このデータベースを作成する時間も通話料が非常に少ないです.
3.git hubの上にdjango-test-utilsというプロジェクトがあります.このプロジェクトにはデフォルトのデータベースを多重化する機能がありますが、このコードをインストールしました.この機能を使用すると、モジュールにkeep-databaseという属性のエラーはありません.Googleでもこの問題を言う人がいます.同じように、解決策はありません.だから、この方法は、通じなかった.
上記の方法1+方法2を併用した場合,テストデータベースが作成されたが,最終的には通話料の時間が非常に少ないため,この方法の組合せもこの問題を解決した.
ここではunit testのみを説明する.
公式ドキュメントです.https://docs.djangoproject.com/en/dev/topics/testing/overview/
ポイントは次のとおりです.
私たちのプロジェクトモジュールにtestを構築します.py(これは重要です.djangoはデフォルトでモジュールのtest.pyファイルをロードしてテストを実行します).定義モジュールはdjangoを継承する.test.TestCase.pythonは、定義したモジュールのtestで始まるメソッドを自動的にロードします.
from django.test import TestCase
from myapp.models import
Animalclass AnimalTestCase(TestCase):
def setUp(self):
Animal.objects.create(name="lion", sound="roar")
Animal.objects.create(name="cat", sound="meow")
def test_animals_can_speak(self):
"""Animals that can speak are correctly identified"""
lion = Animal.objects.get(name="lion")
cat = Animal.objects.get(name="cat")
self.assertEqual(lion.speak(), 'The lion says "roar"')
self.assertEqual(cat.speak(), 'The cat says "meow"')
完了後、コマンドを実行
./manage.py test
デフォルトでは、djangoのテストプロセスでテストデータベースが作成され、testが実行されます.テストデータベースを削除します.
データベースの作成に時間がかかるため、卵が痛い場所です.
この場合、2つの解決策があります.
1.メモリ・データベースsqliteを使用します.settings.pyでの構成
if 'test' in sys.argv:
DATABASES['default'] = {'ENGINE': 'django.db.backends.sqlite3',}
これにより、同じようにテストデータベースが作成されますが、時間が少なくなります.
2.djangoのtestrunnerを使用します.settings.pyでの構成
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
これにより、同じようにデータベースも作成されますが、このデータベースを作成する時間も通話料が非常に少ないです.
3.git hubの上にdjango-test-utilsというプロジェクトがあります.このプロジェクトにはデフォルトのデータベースを多重化する機能がありますが、このコードをインストールしました.この機能を使用すると、モジュールにkeep-databaseという属性のエラーはありません.Googleでもこの問題を言う人がいます.同じように、解決策はありません.だから、この方法は、通じなかった.
, keep-database ,django 。 keep-database , 'django.test.runner.DiscoverRunner' , 。
上記の方法1+方法2を併用した場合,テストデータベースが作成されたが,最終的には通話料の時間が非常に少ないため,この方法の組合せもこの問題を解決した.