Python Django测试用例测试命令
如果测试类中有几个方法,我发现执行顺序是按字母顺序的。但我想定制执行顺序。如何定义执行顺序 例如:testTestA将比TestB先加载Python Django测试用例测试命令,python,django,unit-testing,Python,Django,Unit Testing,如果测试类中有几个方法,我发现执行顺序是按字母顺序的。但我想定制执行顺序。如何定义执行顺序 例如:testTestA将比TestB先加载 class Test(TestCase): def setUp(self): ... def testTestB(self): #test code def testTestA(self): #test code 据我所知,除了重命名测试之外,没有其他方法可以对测试进行排序。您能解释
class Test(TestCase):
def setUp(self):
...
def testTestB(self):
#test code
def testTestA(self):
#test code
据我所知,除了重命名测试之外,没有其他方法可以对测试进行排序。您能解释一下为什么需要按特定顺序运行测试用例吗?在单元测试中,它通常被认为是不好的做法,因为它意味着您的案例不是独立的。单元测试的一个原则是每个测试都应该独立于所有其他测试。 如果在您的情况下,testa中的代码必须在testb之前,那么您可以 将两者结合到一个测试中:
def testTestA_and_TestB(self):
# test code from testTestA
...
# test code from testTestB
或者,也许更好
def TestA(self):
# test code
def TestB(self):
# test code
def test_A_then_B(self):
self.TestA()
self.TestB()
Test
类只测试那些名称以小写字母开头的方法Test…
。
因此,您可以添加额外的助手方法TestA
和TestB
,除非您明确调用它们,否则这些方法将无法运行。要更新主题(来自文档):
为了保证所有测试用例
代码都以干净的
数据库中,Django测试运行程序按以下方式重新排序测试:
- 首先运行所有子类
- 然后,所有其他基于Django的 测试(基于的测试用例,包括 )运行时不保证有特定的订购 也没有在他们中间强制执行
- 还有其他的测试吗
(包括
)可以在不恢复数据库的情况下更改数据库 恢复到其原始状态,然后运行doctests
TransactionTestCase
测试留在数据库中,它们必须
已更新为能够独立运行
例如,为了进行测试,请创建一个帐户以及帐户上的所有后续操作。这个方法的替代方案是什么?@ziang:想法是只测试一个操作。如果要测试帐户上的操作,请创建一个虚拟帐户,然后对其执行一次操作&检查。对每个要测试的操作执行此操作一次,这会为每个操作提供一个测试。我明白了。谢谢你的建议。我喜欢按逻辑顺序安排考试。这并不是说它们是相互依赖的,而是测试(我这里指的是测试方法)越相似,我就越想把它们放在一起。运行带有failfast选项(如Django)的测试时,如果没有按照您定义的顺序执行这些测试,那么很烦人,因为如果您在其中放置了一个pdb行,除非它是按字母顺序排列的第一个失败测试,否则它不会被触发。@sleske那么您愿意为每个测试复制一个代码以创建帐户吗?对我来说似乎一点都不正确,一旦我因为代码重构而不得不重构测试,最好在一个地方进行,而不是编辑2000个测试,对吗?+1:我自己不止一次地这样做,以将测试链接在一起,减少安装时间。