在Django项目中,单元测试通常由app组织,Django提供运行所有测试的工具,单个应用程序的测试,单个测试用例或单个测试方法。
然而,我发现单个应用程序中的测试用例通常属于不同的逻辑组或集群,并且只能运行一组测试通常很有用。想象一下,例如:
那么,我错过了什么吗?小组测试的秘诀是什么?
答案 0 :(得分:2)
对于解决此问题的一种方法,值得查看python的鼻子测试框架。
具体来说,您可以标记测试或设置属性。然后只运行标记有给定标记或标记的测试子集(跨应用程序或整个项目)。
https://nose.readthedocs.org/en/latest/plugins/attrib.html?highlight=tags
请注意,鼻子扩展了unittest,因此你现有的django unittest套件可能已经与鼻跑者一起运行。
答案 1 :(得分:2)
对于Django< 1.6 强>
Personaly我做:
您有一个 init 文件:
myapp/tests/__init__.py :
from test1 import *
from test2 import *
def suite():
import unittest
#import doctest # If you want to use doctest
TEST_CASES = (
'sendim.tests.test1',
'sendim.tests.test2',
)
suite = unittest.TestSuite()
#suite.addTest(doctest.DocTestSuite(object)) # object which have doctest
for t in TEST_CASES :
suite.addTest(unittest.TestLoader().loadTestsFromModule(__import__(t, globals(), locals(), fromlist=["*"])))
return suite
例如,名为“TestCase1”的文件中的测试用例:
myapp/tests/test1.py :
from django.utils import unittest
class TestCase1(unittest.TestCase) :
# Your testcase
如果您启动./manage.py test myapp
,那么每个测试用例都会出现
否则,如果你启动`./manage.py test myapp.TestCase1,它将只执行这个。