1

如何TestCase在测试包下的特定模块中运行所有类的测试?

在一个 Django 项目中,我在 tests/ 下拆分了 tests.py
每个文件(模块)有几个 TestCase 类,每个类都有几个测试方法。 init .py 导入它们中的每一个。

我已经知道我可以做到这些:

  1. 运行所有测试:

    ./manage.py test myapp
    
  2. 或者运行特定的TestCase:

    ./manage.py test myapp.OneOfManyTestCase    
    
  3. 或者从 TestCase 类运行非常具体的测试方法:

    ./manage.py test myapp.OneOfManyTestCase.test_some_small_method
    

但是,我无法弄清楚如何从特定模块运行每个 TestCases。
比如说,OneOfManyTestCaseclass is from tests/lot_of_test.py,还有其他的测试用例。
Django 似乎并不关心带有 TestCases 的模块。

我怎样才能在里面运行所有的测试用例lot_of_test

4

2 回答 2

1

我认为要实现这一点,您需要从DjangoTestSuiteRunner 继承您自己的 TestRunner并覆盖build_suite方法。

于 2013-02-15T14:48:05.040 回答
1

我最终写下了我自己的 TestSuiteRunner,就像@sneawo说的那样。

在 Django-style 失败后,尝试照常导入 python-style。

要修复的一行:

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'
于 2013-02-15T18:25:40.673 回答