我在Django 1.3中创建测试套件时遇到了麻烦。
假设我在名为app_name
的目录中安装了应用程序。该目录中的一个文件是foo.py
,它定义了一个名为Foo
的类。我想测试一下,所以我还有一个名为foo_test.py
的目录文件,它定义了一个名为FooTest
的类。该文件看起来像:
import unittest
import foo
class FooTest(unittest.TestCase):
def setUp(self):
self.foo_instance = foo.Foo()
... etc
现在,我将在其他文件中包含其他测试用例,并且我希望将它们全部作为测试套件的一部分运行。因此,在同一目录app_name
中,我创建了一个文件tests.py
,它将定义套件。起初我把它定义为:
import foo_test
from django.test.simple import DjangoTestSuiteRunner
def suite():
runner = DjangoTestSuiteRunner()
return runner.build_suite(['app_name'])
不幸的是,这会失败,因为调用runner.build_suite(['app_name'])
搜索app_name
tests.py
文件,执行suite()
,这将继续递归,直到Python解释器停止超出最大值的所有内容递归深度。
将runner.build_suite(['app_name'])
更改为
runner.build_suite(['app_name.foo_test'])
或
runner.build_suite(['app_name.foo_test.FooTest'])
导致ValueError: Test label 'app_name.foo_test' does not refer to a test
之类的错误。
并将其更改为:
runner.build_suite(['foo_test'])
或
runner.build_suite(['foo_test.FooTest'])
导致App with label foo_test could not be found
等错误。
此时我有点想法。任何帮助将非常感谢。谢谢!
答案 0 :(得分:0)
请参阅Python documentation for organizing tests,并使用其中一种替代方法来构建测试套件。顺便说一下,推荐的方法都没有使用build_suite
。