首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django TestCase测试顺序

Django TestCase测试顺序
EN

Stack Overflow用户
提问于 2010-04-06 04:34:26
回答 3查看 14.8K关注 0票数 28

如果测试类中有几个方法,我发现执行的顺序是按字母顺序排列的。但我想自定义执行的顺序。如何定义执行顺序?

例如:先加载testTestA,再加载testTestB。

代码语言:javascript
复制
class Test(TestCase):
    def setUp(self):
        ...

    def testTestB(self):
        #test code

    def testTestA(self):
        #test code
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-06 05:01:30

单元测试的一个原则是每个测试都应该独立于所有其他测试。如果在您的情况下,testTestA中的代码必须在testTestB之前,那么您可以将这两个代码合并到一个测试中:

代码语言:javascript
复制
def testTestA_and_TestB(self):
    # test code from testTestA
    ...
    # test code from testTestB

或者,也许更好的方法是

代码语言:javascript
复制
def TestA(self):
    # test code
def TestB(self):
    # test code
def test_A_then_B(self):
    self.TestA()
    self.TestB()

Test类只测试那些名称以小写test...开头的方法。因此,您可以添加额外的帮助器方法TestATestB,除非显式调用它们,否则不会运行它们。

票数 66
EN

Stack Overflow用户

发布于 2010-04-06 04:43:41

据我所知,除了重命名测试之外,没有其他方法可以对测试进行排序。你能解释一下为什么你需要按照特定的顺序运行测试用例吗?在单元测试中,它通常被认为是糟糕的实践,因为它意味着你的用例不是独立的。

票数 11
EN

Stack Overflow用户

发布于 2015-02-15 02:12:27

要更新主题(来自文档):

Order in which tests are executed

为了保证所有TestCase代码都从干净的数据库开始,Django test runner以以下方式重新排序测试:

首先运行

  • 所有TestCase子类。然后,运行所有其他基于
  • 的测试(基于SimpleTestCase的测试用例,包括TransactionTestCase),不保证或强制它们之间的特定顺序。
  • 然后运行可能更改数据库而不将其还原为原始状态的任何其他<代码>C15测试(包括doctests)。

注释:新的测试排序可能会揭示测试用例排序上的意外依赖。这就是文档测试的情况,这些文档测试依赖于给定TransactionTestCase测试在数据库中留下的状态,它们必须更新才能独立运行。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2581005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档