Python 鼻子测试跑步者查找除标签外的所有测试

Python 鼻子测试跑步者查找除标签外的所有测试,python,tags,nosetests,Python,Tags,Nosetests,我试图找出是否有一种方法可以让nose test runner运行除带有特定标记的测试之外的所有测试。看起来这在属性中是可能的,但是我不知道是否有一种方法可以用标签来实现,标签是属性的子集 # coding: utf-8 from nose.plugins.attrib import attr @attr("foo", "bar", "baz") def test1(): print "I'm test1" @attr("foo") def test_2():

我试图找出是否有一种方法可以让nose test runner运行除带有特定标记的测试之外的所有测试。看起来这在属性中是可能的,但是我不知道是否有一种方法可以用标签来实现,标签是属性的子集

 # 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 tags='tag'
我的标记测试如下所示:

@attr(tags=['foo', 'bar', 'baz'])
    def test_some_stuff(self):
但如果我想运行所有的测试,除了“baz”标记之外,我该怎么做呢

我试过这样的表达

nosetests -A 'not baz'
nosetests -a '!baz'
nosetests tags='!baz'
但这些似乎对属性没有任何影响。我没有看到在文档中排除标记的示例:


我不希望仅仅为了排除而在这个大型测试套件中添加一个新的标记,我必须记住总是添加一个假的“排除标记”。

您需要展平您的标记。指定它的方式意味着您有一个属性,其复杂值为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
可以根据需要工作。

啊,这是有道理的。我只是在尝试这个想法,谢谢你的帮助!