Я хотел бы иметь возможность параметризовать пару тестов из файла конфигурации, но в то же время иметь возможность пропустить эти тесты, если не будет указан конкретный параметр команды.Пропустить параметризованные тесты, сгенерированные pytest_generate_tests на уровне модуля
я могу пропустить тесты, добавив следующий код в верхней части тестового модуля:
from json import loads
import pytest
@pytest.mark.skipif(pytest.config.getvalue("-k") != "smoke",
reason="Smoke tests must be explicitly launched through -k smoke option")
Тесты не выполняются при выдаче py.test
или python -m pytest
если опция -k smoke
не добавляется.
Я также могу создавать параметризованные тесты из конфигурационных файлов с помощью:
def pytest_generate_tests(metafunc):
with open('tests/test_smoke.json','r') as fp:
confs = loads(fp.read().decode("utf-8-sig"))
for arg in metafunc.funcargnames:
if arg == "conf":
metafunc.parametrize("conf",confs)
И пример теста, который параметризованных будет:
def test_that_require_conf(conf):
assert not conf
Проблема заключается в том, что обе вещи не работают хорошо вместе , Тест не пропускается, когда используется pytest_generate_tests
. Если я добавлю опцию в pytest_generate_tests
во избежание параметризации, то вызов yo pytest
не будет выполнен с ошибкой, потому что conf
Необходимое оборудование не обязательно test_that_require_conf
не может быть найдено.
Любая идея о том, как достичь этого?