2013-02-14 55 views
1

如何在所有测试包中的特定模块中运行来自所有TestCase类的测试?在模块内部运行每个TestCase

在Django项目,我已经下测试分裂tests.py/
每个文件(模块)具有几个测试用例类,以及它们中的每具有若干试验方法。 init .py导入它们中的每一个。

我已经知道我能做到这些:

  1. 运行所有测试:

    ./manage.py test myapp 
    
  2. 或者运行特定的测试用例:

    ./manage.py test myapp.OneOfManyTestCase  
    
  3. 或者运行很具体来自TestCase类的测试方法:

    ./manage.py test myapp.OneOfManyTestCase.test_some_small_method 
    

但是,我无法弄清楚如何从一个特定的模块运行每个TestCases。
说,OneOfManyTestCase类是从tests/lot_of_test.py,也有其他测试用例。
Django似乎不关心TestCases模块。

如何运行lot_of_test内的所有TestCases?

回答

1

我结束了writing down my own TestSuiteRunner,就像@sneawo说的那样。

在Django风格失败后,尝试像平常一样导入python样式。

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) 

settings.py设置TEST_RUNNER

TEST_RUNNER='myapp.tests.module_test_suite_runner.ModuleTestSuiteRunner' 
1

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

+0

终于实现了这一点。谢谢你的提示 :) – 2013-02-15 18:27:09