【问题标题】:Custom test suite for django appdjango 应用程序的自定义测试套件
【发布时间】:2012-03-04 21:52:05
【问题描述】:

我有一个非常复杂的 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 中,我从test_obj1.pytest_obj2.py 导入TestCase 实例,这足以运行所有可用的测试。

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

还有第二种方法可以为模块定义测试套件:如果你 在 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 应用创建自定义测试套件吗?我用谷歌搜索过,但没有发现任何相关信息。

【问题讨论】:

    标签: django unit-testing test-suite


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 2017-01-22
      • 1970-01-01
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多