我有一套测试,我最近发现它有一个(不正确的)排序关系。他们都应该是独立的。
Nose似乎每次以相同的顺序运行测试,除非 magic 发生并且我设法注入导致失败的东西(不是我最喜欢的方法),否则它本身不会发现这些依赖关系编程)。
如何指示鼻子随机化它执行的测试顺序?
答案 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
运行