2

我有一个非常复杂的 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

我有更多的对象。在我从and/myapp/tests/__init__.py导入TestCase实例时,运行所有可用的测试就足够了。test_obj1.pytest_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*方法。

任何建议如何正确地为 django 应用程序创建自定义测试套件?我已经用谷歌搜索了,但我一无所获。

4

1 回答 1

2

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

suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestObj1Form))
于 2012-02-13T14:40:13.170 回答