2017-06-14 3 views
0

これは異常事態である - ほとんどのDjangoのユーザは、Djangoのテストランナは、彼らのすべてのテストを見つけたいです。Djangoのテストディスカバリを無効にするには?

私は異なる構成で実行されているいくつかのテストスイートでPythonライブラリに働いているので、私は発見が見つけ、間違った設定からテストを実行する必要はありません。検出を完全に無効にするにはどうすればいいですか?INSTALLED_APPSで明示的に宣言されているアプリケーションのテストのみを実行する1.6以前の動作に依存していますか?

マイライブラリ構造: ./manage_contrib.py test contrib.tests

library/ # django app used by others 
tests/  # custom test suites here 
    core/  # tests of core functionality 
    custom/ # tests of a custom feature requiring separate config 
    contrib/ # tests for assorted contrib features, also requiring separate config 
    manage_core.py # separate manage.py files for each "project" 
    manage_custom.py # these specify settings file to use. 
    manage_contrib.py 
    settings.py   # base settings for all tests 
    settings_core.py # settings for 'core' tests including unique INSTALLED_APPS 
    settings_custom.py # settings for 'custom' tests; different INSTALLED_APPS 
    settings_contrib.py # settings for 'contrib' tests; different INSTALLED_APPS 

問題は「contribの」テスト・スイートのテストを実行する必要があり、このコマンドは、また、「コア」のテストを発見し、実行していることです

+0

必要なアプリケーションがインストールされていない場合は(https://docs.python.org/3/library/unittest.html#skipping-tests-and-expected-failures)[テストをスキップ]ことができます。 – knbk

答えて

0

うーん、私は残念ながらあなただけの個々のアプリケーションから(「settings.TEST_DIRECTORIES = settings.INSTALLED_APPS」ラ)を実行するunittestを言わせてかもしれない設定パラメータを認識していないんだけど、あなたのテストのaを与えることができるしている場合テストスイートを実行するときに--pattern =オプションを使用することができます。

あなたは

/myapp/tests/test_a_models.py 
/myapp/tests/test_b_models.py 

を持っている場合たとえば、あなたが唯一の./manage.py test --pattern='*_a_*'で実行することができ、その後、./manage.py test --pattern='*_b_*'間違い

ない理想的とbが実行されますが、ジョブはどのくらいの柔軟性あなたに依存して行われる可能性がありますあなた自身のアプリでテスト命名規則を持っています。

0

あなたはジャンゴでテストを実行すると、デフォルトではで始まるすべての機能を実行します:def test_。アンダースコアを前に追加すると、その特定のテストは無視されます。実行したくないテスト機能をすべてdef _test_に変更すれば正常に動作するはずです。場合は、あなたは、あなたが検索を行うことができます無視しtest_から_test_に交換したいので、多くのテストを持っています。

1

これは、Djangoのドキュメントから欠落していますが、コマンドラインが./manage.py help testを経由して見つかったオプション、持っている:テストの発見を防ぐためには表示されませんテストにモジュールを指定して、紛らわしい

-t TOP_LEVEL, --top-level-directory TOP_LEVEL 
        Top level of project for unittest discovery. 

を、しかし、指定します

./manage_contrib.py test contrib.tests -t ./contrib/

contribの外に位置するテストの発見を防ぐために表示されていること:サブディレクトリには、このように、ありません。

関連する問題