3

I have a suite of tests that I recently discovered had an (incorrect) ordering relationship. They are all supposed to be independent.

Nose appears to run tests in the same order each time, which will not per se uncover these dependencies unless the magic happens and I manage to inject something which causes a failure (not my favorite method of programming).

How do I instruct nose to randomize the order of tests it executes?

4

2 回答 2

3

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

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

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

如果您只想一次性公开依赖项,则可以将测试列表传递给鼻子。一种惰性方法是获取测试列表,并一一通过所有排列:

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

运行可能需要一整夜,但您至少会知道问题出在哪里。

希望这能让你开始。

于 2012-12-14T02:13:23.023 回答
-1

您可以通过使用类名指定测试用例的完全限定路径来按顺序运行

./nose <<testcasename>>:<<classname>>.testcase_name1 <<testcasename>>:<<classname>>.testcase_name2
        <<testcasename>>:<<classname>>.testcase_name4

将这些路径复制到 bat.cfg 文件中并使用 ./nose -c bat.cfg 运行

于 2014-09-19T05:46:48.900 回答