如何在测试包下的特定模块中运行所有TestCase
类的测试?
在Django项目中,我在tests /
下测试了tests.py
每个文件(模块)都有几个TestCase类,每个类都有几个测试方法。
init .py会导入每个。
我已经知道我可以做到这些:
运行所有测试:
./manage.py test myapp
或运行特定的TestCase:
./manage.py test myapp.OneOfManyTestCase
或者从TestCase类中运行非常具体的测试方法:
./manage.py test myapp.OneOfManyTestCase.test_some_small_method
但是,我无法弄清楚如何从特定模块运行每个TestCase。
比如,OneOfManyTestCase
类来自tests/lot_of_test.py
,还有其他测试用例。
Django似乎并不关心使用TestCases的模块。
如何在lot_of_test
内运行所有TestCase?
答案 0 :(得分:1)
我认为要实现这一点,您需要从DjangoTestSuiteRunner继承自己的TestRunner并覆盖build_suite
方法。
答案 1 :(得分:1)
我最终writing down my own TestSuiteRunner,就像@sneawo所说的那样。
Django-style失败后,尝试像往常一样导入python-style。
One line要修复:
suite.addTest(build_test(label))
进入
try:
suite.addTest(django.test.simple.build_test(label))
except ValueError:
# change to python-style package name
head, tail = label.split('.', 1)
full_label = '.'.join([head, django.test.simple.TEST_MODULE, tail])
# load tests
tests = unittest.defaultTestLoader.loadTestsFromName(full_label)
suite.addTests(tests)
并在TEST_RUNNER
中设置settings.py
:
TEST_RUNNER='myapp.tests.module_test_suite_runner.ModuleTestSuiteRunner'