我最近发现一组测试具有(不正确的)排序关系。他们都应该是独立的。
Nose 似乎每次都以相同的顺序运行测试,这本身不会发现这些依赖关系,除非奇迹发生并且我设法注入(inject)导致失败的东西(不是我最喜欢的编程方法)。
我如何指示 Nose 随机化它执行的测试顺序?
最佳答案
没有内置的方法可以做到这一点。我环顾四周,有一个 Nose 插件声称可以随机化测试顺序:
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
运行可能需要一整夜,但你至少知道你的问题在哪里。
希望这能让你开始。
关于python - 用 Nose 测试随机化测试执行的顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13850512/