鼻子测试运行器找到除标签之外的所有测试

Nose test runner finding all tests except a tag

我想弄清楚是否有办法进行鼻子测试 运行ner 运行 所有测试,但带有特定标签的测试除外。看起来这对属性来说是可能的,但我看不出是否有办法用标签来做到这一点,标签是属性的一个子集。

目前我通过调用

来使用标签
nosetests -a tags='tag'

我标记的测试看起来像:

@attr(tags=['foo', 'bar', 'baz'])
    def test_some_stuff(self):

但是如果我想 运行 除了 'baz' 标记的所有测试,我该怎么做?

我试过像

这样的表达
nosetests -A 'not baz'
nosetests -a '!baz'
nosetests tags='!baz'

但是那些似乎对属性没有任何影响。而且我没有在文档中看到排除标签的示例:http://nose.readthedocs.org/en/latest/plugins/attrib.html

我宁愿不必添加一个新标签来排除我正在使用的这个大型测试套件,并且必须记住总是添加一个假的 'exclusion tag'。

您需要扁平化标签。您指定它的方式意味着您有 one 属性,其复杂值为 list.

相反,将整个标签范围指定为直接属性。

 # coding: utf-8
 from nose.plugins.attrib import attr


 @attr("foo", "bar", "baz")
 def test1():
     print "I'm test1"


 @attr("foo")
 def test_2():
     print "I'm test2"

然后 nosetests -a '!bar' /tmp/test.py 就可以正常工作了。