ホームページ  >  記事  >  バックエンド開発  >  Django 単体テスト (1)

Django 単体テスト (1)

高洛峰
高洛峰オリジナル
2016-10-17 13:53:451087ブラウズ

Django テスト フレームワークは非常にシンプルです。推奨される方法は、Python 標準ライブラリの Unittest モジュールを使用することです。

テストの作成

Django の単体テストでは、クラスベースのアプローチを使用してテストを定義する Python の Unittest モジュールを使用します。クラス名は django.test.TestCase で、Python の Unittest.TestCase から継承されます。

from django.test import TestCase
from myapp.models import Animal
  
class 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"')

テストを実行するとき、テスト プログラムは、test で始まるすべてのファイル内のすべてのテスト ケース (inittest.TestCase のサブクラス) を検索し、自動的にテスト セットを作成してテストを実行します。

注: テストがデータベース アクセス (モデルの読み取り、クエリ) に基づいている場合は、unittest.TestCase の代わりに django.test.TestCase を使用してテスト クラスを作成する必要があります。

テストの実行

ディレクトリ内のすべてのテストを実行します (すべての test*.py ファイル):

$ python manage.py test

Animals プロジェクトの下のテスト パッケージ内のテストを実行します:

$ python manage.py test Animals.tests

動物プロジェクトでテストを実行します:

$ python manage.py test Animals

テストケースを個別に実行します:

$ python manage.py test Animals.tests.AnimalTestCase

テストを実行ケースを個別にテスト方法:

$ python manage.py test Animals.tests.AnimalTestCase.test_animals_can_speak

テストファイルへのパスを指定します:

$ python manage.py test Animals/

ワイルドカードテストファイル名:

$ python manage . py test --pattern="tests_*.py"

警告リマインダーを有効にする:

$ python -Wall manage.py test

Database

テストにはデータベースが必要で、django はテスト用に別のデータベースを生成します。テストが合格するかどうかに関係なく、すべてのテストが実行されると、テスト データベースは破棄されます。

デフォルトでは、テスト データベースの名前は test_DATABASE_NAME で、DATABASE_NAME は settings.py で構成したデータベース名です。テスト データベースに別の名前を付ける必要がある場合は、settings.py で TEST_DATABASE_NAME の値を指定します。 sqlite3 を使用すると、データベースはメモリ内に作成されます。

データベースが個別に作成されることを除き、テスト ツールは同じデータベース構成 (DATABASE_ENGINE、DATABASE_USER、DATABASE_HOST など) を使用します。テスト データベースを作成したユーザーは DATABASE_USER (設定内) で指定されているため、それを確認する必要があります。 DATABASE_USER には、データベースを作成するための十分な権限があります。

テストの実行順序

すべてのテストがクリーンなデータベースから開始されるようにするため、実行順序は次のとおりです:

1. すべての TestCase サブクラスが最初に実行されます。

2. 他のすべての単体テスト (unittest.TestCase、SimpleTestCase、TransactionTestCase)。

3. その他のテスト (doctest など)

高速テスト

PASSWORD_HASHERS をより高速なアルゴリズムに設定できます:

PASSWORD_HASHERS = (
    'django.contrib.auth.hashers.MD5PasswordHasher',
)


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。