使用nosetests随机化测试执行的顺序

时间:2012-12-12 23:32:29

标签: python nose

我有一套测试,我最近发现它有一个(不正确的)排序关系。他们都应该是独立的。

Nose似乎每次以相同的顺序运行测试,除非 magic 发生并且我设法注入导致失败的东西(不是我最喜欢的方法),否则它本身不会发现这些依赖关系编程)。

如何指示鼻子随机化它执行的测试顺序?

2 个答案:

答案 0 :(得分:2)

没有内置方法可以做到这一点。我环顾四周,这个鼻子插件声称随机化了测试顺序:

https://github.com/my8bird/nose-randomize

从源代码看,它看起来只适用于从unittest.TestCase继承的测试。如果这对你不起作用,你当然可以把它作为自己写作的开始。

如果您只想要一次性公开依赖项,您可以将测试列表传递给nose。一个懒惰的方法是获取测试列表,并逐个传递所有排列:

nosetests /path/to/testA.py /path/to/testB.py /path/to/testC.py
nosetests /path/to/testA.py /path/to/testC.py /path/to/testB.py
nosetests /path/to/testB.py /path/to/testA.py /path/to/testC.py
nosetests /path/to/testB.py /path/to/testC.py /path/to/testA.py
nosetests /path/to/testC.py /path/to/testA.py /path/to/testB.py
nosetests /path/to/testC.py /path/to/testB.py /path/to/testA.py

可能需要整夜运行,但你至少知道你的问题在哪里。

希望能让你开始。

答案 1 :(得分:-1)

您可以通过指定具有类名

的测试用例的完全限定路径来按顺序运行
./nose <<testcasename>>:<<classname>>.testcase_name1 <<testcasename>>:<<classname>>.testcase_name2
        <<testcasename>>:<<classname>>.testcase_name4

在bat.cfg文件中复制这些路径并使用./nose -c bat.cfg

运行