如何为pytest命令指定几个标记
问题描述
阅读http://doc.pytest.org/en/latest/example/markers.html我看到了包含或排除基于标记的某些python测试的示例。
包括:
pytest -v -m webtest
排除:
pytest -v -m "not webtest"
如果要同时为包括和排除指定多个标记,该怎么办?
解决方案
使用and
/or
组合多个标记,与-k
选择器相同。示例测试套件:
import pytest
@pytest.mark.foo
def test_spam():
assert True
@pytest.mark.foo
def test_spam2():
assert True
@pytest.mark.bar
def test_eggs():
assert True
@pytest.mark.foo
@pytest.mark.bar
def test_eggs2():
assert True
def test_bacon():
assert True
选择标记为foo
而未标记为bar
的所有测试
$ pytest -q --collect-only -m "foo and not bar"
test_mod.py::test_spam
test_mod.py::test_spam2
选择既未标记为foo
也未标记为bar
的所有测试
$ pytest -q --collect-only -m "not foo and not bar"
test_mod.py::test_bacon
选择标记为foo
、bar
$ pytest -q --collect-only -m "foo or bar"
test_mod.py::test_spam
test_mod.py::test_spam2
test_mod.py::test_eggs
test_mod.py::test_eggs2
相关文章