Я пытаюсь пропустить тесты, которые не поддерживаются кодом, который я тестирую. Мой PyTest выполняет тесты для встроенной системы, в которой могут работать разные версии кода. То, что я хочу сделать, пометить мой тест таким образом, чтобы он выполнялся только в том случае, если он поддерживается целью.
Я добавил метод pytest_addoption
:
def pytest_addoption(parser):
parser.addoption(
'--target-version',
action='store', default='28',
help='Version of firmware running in target')
Создайте прибор для принятия решения. если тест должен быть запущен:
@pytest.fixture(autouse = True)
def version_check(request, min_version: int = 0, max_version: int = 10000000):
version_option = int(request.config.getoption('--target-version'))
if min_version and version_option < min_version:
pytest.skip('Version number is lower that versions required to run this test '
f'({min_version} vs {version_option})')
if max_version and version_option > max_version:
pytest.skip('Version number is higher that versions required to run this test '
f'({max_version} vs {version_option})')
Пометить тесты следующим образом:
@pytest.mark.version_check(min_version=24)
def test_this_with_v24_or_greater():
print('Test passed')
@pytest.mark.version_check(max_version=27)
def test_not_supported_after_v27():
print('Test passed')
@pytest.mark.version_check(min_version=13, max_version=25)
def test_works_for_range_of_versions():
print('Test passed')
В аргументах для запуска теста я просто хочу добавить --target-version 22
и иметь только правильные тесты Я не смог выяснить, как передать аргументы с @pytest.mark.version_check(max_version=27)
на version_check
.
Есть ли способ сделать это или я совершенно не в курсе и должен искать что-то еще? чтобы выполнить 1019 * это? 1018 *