按顺序运行PyUnit测试

时间:2013-07-09 09:08:45

标签: python python-unittest

有没有办法按照编写顺序执行测试?

PyUnit中发生的事情是每当我运行测试时,它都以字母顺序运行。这意味着即使我在TestB之后编写TestA,TestA也会在TestA之前运行。这给我带来了麻烦。

import unittest

class SimpleTestCase(unittest.TestCase):

    def testB(self):
        print "Test B"

    def testA(self):
        print "Test A"

我希望在testB之前执行testA

3 个答案:

答案 0 :(得分:1)

我使用提供here的PyTest排序插件找到了它的解决方案。

在CLI中尝试py.test YourModuleName.py -vv,测试将按照它们在模块中出现的顺序运行(首先是testB,然后是testA)

我做了同样的事情,对我来说很好。

注意:您需要安装PyTest包并导入它。

答案 1 :(得分:0)

如果这些是单元测试,那么它们应该是完全隔离的,所以你应该检查那些测试中的设计缺陷。

如果你真的需要某种原因,使用特定的顺序,那么你有三种方法可以在python中实现这个目的:

  1. 使用unittest - 更改排序方法,描述为here
  2. 使用Proboscis - 使用以下装饰器@test(depends_on = [dependecies列表]),找到here
  3. 使用nose-nose按照它们在模块文件中出现的顺序执行单元测试。更多信息here

答案 2 :(得分:-1)

PyUnit使用TestLoaded收集套件中的所有测试用例并按字母顺序运行

例如,测试A在测试B之前运行

如果你想首先运行TEST B,我们必须创建函数并添加测试B然后测试A

def suite():
    suite = unittest.TestSuite()
    suite.addTest(SimpleTestCase('test_B'))
    suite.addTest(SimpleTestCase('test_A'))
    return suite