您可以通过在tests.py中添加/编辑suite()函数来执行此操作,该函数定义了django测试运行程序将运行哪些测试。
import unittest
import doctest
from project import views
def suite():
suite = unittest.TestSuite()
suite.addTest(doctest.DocTestSuite(views))
return suite
然后像往常一样运行测试,您应该在views.py run中看到您的doctest。
$ python manage.py test project
django测试文档中对此有更详细的描述
在运行测试时,测试实用程序的默认行为是在models.py和tests.py中找到所有测试用例(即unittest.TestCase的子类),并根据这些测试用例自动构建测试套件,并运行该套件。
还有另一种为模块定义测试套件的方法:如果在models.py或tests.py中定义了一个名为suite()的函数,则Django测试运行器将使用该函数为该模块构造测试套件。这遵循建议的单元测试组织。有关如何构造复杂的测试套件的更多详细信息,请参见Python文档。
但是,请记住,构建自己的测试套件意味着django测试运行程序不会自动运行tests.py中包含的任何测试。例如,您必须手动将它们添加到套件中
import unittest
import doctest
from project import views
class FooTestCase(unittest.TestCase):
def testFoo(self):
self.assertEquals('foo', 'bar')
def suite():
suite = unittest.TestSuite()
suite.addTest(doctest.DocTestSuite(views))
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(FooTestCase))
return suite