我有一个长期测试,持续2天,我不想包含在通常的测试运行中。我也不想输入命令行参数,这会在每次通常的测试运行中取消选择它和其他测试。当我真正需要时,我宁愿选择默认取消选择的测试。我尝试将测试从test_longrun
重命名为longrun
并使用命令
py.test mytests.py::longrun
但这不起作用。
答案 0 :(得分:8)
尝试将您的测试装饰为@pytest.mark.longrun
在conftest.py
def pytest_addoption(parser):
parser.addoption('--longrun', action='store_true', dest="longrun",
default=False, help="enable longrundecorated tests")
def pytest_configure(config):
if not config.option.longrun:
setattr(config.option, 'markexpr', 'not longrun')
答案 1 :(得分:0)
这是一种稍微不同的方式。
用 @pytest.mark.longrun
装饰您的测试:
@pytest.mark.longrun
def test_something():
...
此时您可以运行除使用 -m 'not longrun'
标记的测试之外的所有内容
$ pytest -m 'not longrun'
或者如果您只想运行 longrun
标记的测试,
$ pytest -m 'longrun'
但是,要使 -m 'not longrun'
成为默认值,请在 pytest.ini
中将其添加到 addopts
:
[pytest]
addopts =
-m 'not longrun'
...
如果你想运行所有的测试,你可以这样做
$ pytest -m 'longrun or not longrun'