django应用程序的自定义测试套件

时间:2012-02-13 13:36:22

标签: django unit-testing test-suite

我有一个非常复杂的django应用程序,它具有以下结构。

/myapp
/myapp/obj1/..
/myapp/obj1/views.py
/myapp/obj1/forms.py
/myapp/obj2/..
/myapp/obj2/views.py
/myapp/obj2/forms.py
/myapp/tests/..
/myapp/tests/__init__.py
/myapp/tests/test_obj1.py
/myapp/tests/test_obj2.py

我有更多的对象。在/myapp/tests/__init__.py我从TestCasetest_obj1.py导入test_obj2.py个实例,只需运行所有可用的测试即可。

我要做的是创建一个自定义测试套件。根据文件:

  

为模块定义测试套件还有第二种方法:如果你   在models.py或tests.py中定义一个名为suite()的函数   Django测试运行器将使用该函数来构建测试套件   对于那个模块。这遵循建议的单位组织   试验。有关如何使用的更多详细信息,请参阅Python文档   构建一个复杂的测试套件。

所以,我已经创建了这样的函数:

def suite():
    suite = unittest.TestSuite()
    suite.addTest(TestObj1Form())
    suite.addTest(TestObj2Form())
    return suite

但是,当我运行测试时,我收到此错误:ValueError: no such test method in <class 'myproject.myapp.tests.test_obj1.TestObj1Form'>: runTest。当然我可以定义这个方法,但是如果我运行test,它将仅调用此方法并忽略所有test*方法。

有关如何正确为django app创建自定义测试套件的任何建议吗?我用谷歌搜索,我一无所获。

1 个答案:

答案 0 :(得分:2)

您应该使用特殊功能添加所有测试

suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestObj1Form))