1. ホーム
  2. パイソン

[解決済み】アプリにtestsディレクトリがあるとき、Djangoで特定のテストケースを実行する

2022-04-13 04:37:19

質問

Djangoのドキュメント( http://docs.djangoproject.com/en/1.3/topics/testing/#running-tests ) によると、個々のテストケースを指定して実行することができるそうです。

$ ./manage.py test animals.AnimalTestCase

これは、Django アプリケーションの tests.py ファイルにテストがあることを想定しています。もしそうであれば、このコマンドは期待通りに動作します。

Djangoアプリケーションのテストをtestsディレクトリに置いています。

my_project/apps/my_app/
├── __init__.py
├── tests
│   ├── __init__.py
│   ├── field_tests.py
│   ├── storage_tests.py
├── urls.py
├── utils.py
└── views.py

tests/__init__.py ファイルには、suite()関数があります。

import unittest

from my_project.apps.my_app.tests import field_tests, storage_tests

def suite():
    tests_loader = unittest.TestLoader().loadTestsFromModule
    test_suites = []
    test_suites.append(tests_loader(field_tests))
    test_suites.append(tests_loader(storage_tests))
    return unittest.TestSuite(test_suites)

テストを実行するために私は

$ ./manage.py test my_app

個別のテストケースを指定しようとすると、例外が発生します。

$ ./manage.py test my_app.tests.storage_tests.StorageTestCase
...
ValueError: Test label 'my_app.tests.storage_tests.StorageTestCase' should be of the form app.TestCase or app.TestCase.test_method

例外メッセージに書いてある通りにやってみた。

$ ./manage.py test my_app.StorageTestCase
...
ValueError: Test label 'my_app.StorageTestCase' does not refer to a test

テストが複数のファイルに分かれている場合、個々のテストケースはどのように指定すればよいですか?

どのように解決するのですか?

チェックする ジャンゴノーズ . のように実行するテストを指定することができます。

python manage.py test another.test:TestCase.test_method

またはコメントにあるように、構文を使用します。

python manage.py test another.test.TestCase.test_method