我有考试:
3
我有我的conftest.py:
import pytest
def test_normal():
print("normal test runned")
assert 1 == 1
@pytest.mark.production
def test_production():
print("production test runned")
assert 1 == 1
如果我跑步:
def pytest_addoption(parser):
try:
parser.addoption('--production', action='store_true', dest="production", default=False, help="enable production tests")
except ValueError:
print('option already set')
def pytest_configure(config):
if not config.option.production:
setattr(config.option, 'markexpr', 'not production')
仅test_normal运行。
如果我跑步:
pytest some_test.py -v -s
两个测试都运行。
我如何做到这一点,以便此命令可以运行两个测试:
pytest some_test.py -v -s --production
答案 0 :(得分:0)
Pytest docs指出您可以单独使用@pytest.mark
来实现所需的功能:
@pytest.mark.production
并运行pytest -m production
。
在您的方法中使用--m
:
def pytest_addoption(parser):
try:
parser.addoption('--m', action='store', help="enable production tests")
except ValueError:
print('option already set')
def pytest_configure(config):
if config.option.m != "production":
setattr(config.option, 'markexpr', 'not production')
答案 1 :(得分:0)
您不需要任何争执。您可以直接从命令行执行此操作。 要仅运行生产测试:
pytest some_test.py -v -s -m 'production'
仅运行非生产测试:
pytest some_test.py -v -s -m 'not production'
要同时运行两个:
pytest some_test.py -v -s
或pytest some_test.py -v -s -m 'production or not production'
类似地,您可以在标记中使用and
,or
和not
的组合来运行任何测试组合。