在python中测试如何指定测试列表

时间:2013-12-20 19:39:11

标签: python nose

我想知道是否有一种方法可以指定要在文件中运行的测试列表。 我已经知道你可以在命令中这样做:

nosetests myfile.py:test1 myfile.py:test3 myfile.py:test20

但这很容易失控。 我也知道有一个 loadTestsFromNames(names,module = None) 作为python unittest的一部分的方法,它可能用于加载从yaml文件解析的测试名称,但是如果nose没有实现这样的东西,那对我来说就没用了。

2 个答案:

答案 0 :(得分:0)

尽管对您的问题的评论中存在有效问题,但希望运行一个选定的,有限数量的测试用例是完全有效的。例如:所有测试用例可能都很昂贵,而选择集可能表示接受更多测试。或者您可能需要控制"订购"测试 - 这对于单元测试来说是不好的做法(但是在集成测试非常慢的情况下,可能是你不得不接受的)。

两个建议:

1)测试标记: http://nose.readthedocs.io/en/latest/plugins/attrib.html

2)您还可以编写一个小Nose插件,根据模式选择测试,或返回固定的测试列表。

我使用测试标记(nosetests -a"标记名")并且它非常灵活。鼻子插件也会起作用;我自己没试过。

答案 1 :(得分:0)

这会创建许多xunit.xml-s,这是我想要的jenkins。

list_of_tests = ["test_1", "test_2", "test_3"]
for atest in list_of_tests:
    test = Popen(['nosetests', '--nologcapture', 'myfile.py:%s'%atest, '-v', '-s', '--with-xunit', '--xunit-file=%s.xml' % atest], stdout=PIPE, stderr=STDOUT)
            for line in iter(test.stdout.readline, ''):
                print line.strip()