您可以通過在tests.py中添加/編輯suite()函數來完成此操作,該函數定義django測試運行器將運行哪些測試。
import unittest
import doctest
from project import views
def suite():
suite = unittest.TestSuite()
suite.addTest(doctest.DocTestSuite(views))
return suite
然後,像往常一樣運行測試,你應該看到你的doctests在views.py運行。
$ python manage.py test project
這在更詳細的django testing documentation
當你運行你的測試描述,測試工具的默認行爲是要找到所有的測試用例(即,單元測試的子類。 TestCase)在models.py和tests.py中自動構建一個測試套件,然後運行該套件。
還有第二種方法爲模塊定義測試套件:如果在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
謝謝!真的有用 – droope 2011-10-05 19:03:22
這仍然是正確的方式,與Django 1.8?安德烈米拉斯的回答如下表明它已被更新。 – 2013-12-13 12:32:24
@ BrianM.Hunt不確定1.8版本,但在1.6版本中,似乎不再調用'suite()'。安德烈用'load_tests()'的答案代替了。 – jamesc 2013-12-13 13:37:40