这是一个不寻常的情况 - 大多数Django用户希望Django的测试运行员找到他们所有的测试。
我正在开发一个python库,其中包含多个运行不同配置的测试套件,所以我不希望发现从错误的配置中查找和运行测试。如何完全禁用发现并依赖于仅在INSTALLED_APPS中显式声明的应用程序运行测试的1.6之前的行为?
我的图书馆结构:
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'测试套件的测试,也是为'core'找到并运行测试:
./manage_contrib.py test contrib.tests
答案 0 :(得分:1)
Django文档中缺少它,但命令行有一个选项,通过function multiplyBetween(num1, num2) {
if (isNaN(num1) || isNaN(num2)) return NaN;
if (num1 === 0 || num2 === 0) return 0;
if (num1 === num2) return 1;
if (num2 < num1) {
return 0;
}
return num1 * multiplyBetween(num1 + 1, num2)
}
console.log(multiplyBetween(2, 5));
找到:
./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/
之外的测试。
答案 1 :(得分:0)
嗯,我很遗憾不知道一个设置参数,可能让你告诉unittest只能从各个应用程序运行(a-la“settings.TEST_DIRECTORIES = settings.INSTALLED_APPS”)但是如果你能够给你的测试一个独特的命名约定,您可以在运行测试套件时使用--pattern =选项。
例如,如果你有
/myapp/tests/test_a_models.py
/myapp/tests/test_b_models.py
您只能使用./manage.py test --pattern='*_a_*'
运行,然后使用./manage.py test --pattern='*_b_*'
绝对不理想,但可能会完成工作,具体取决于您在自己的应用程序中使用测试命名约定的灵活性。