无法为Django创建测试套件

时间:2012-04-11 18:34:39

标签: django unit-testing testing django-testing

我在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等错误。

此时我有点想法。任何帮助将非常感谢。谢谢!

1 个答案:

答案 0 :(得分:0)

请参阅Python documentation for organizing tests,并使用其中一种替代方法来构建测试套件。顺便说一下,推荐的方法都没有使用build_suite