我试图找出是否有办法让鼻子测试跑步者运行所有测试,除了具有特定标签的测试。看起来这可以通过属性实现,但我不知道是否有办法使用标记,这是属性的一个子集。
目前我通过调用
来使用标签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
我宁愿不必添加新标记,只是为了排除我正在使用的大型测试套件,并且必须记住始终添加一个假的排除标记'。
答案 0 :(得分:5)
您需要展平标签。指定它的方式意味着您具有一个属性,其复杂值为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
按需运作。