Pytest: наследовать параметры прибора - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть прибор, который действует как переключатель для параметризации тестов для запуска в двух состояниях (онлайн / офлайн). Это дополнительно применяет пользовательские метки к тесту, если тест находится в автономном режиме.

@pytest.fixture(
    params=['online', pytest.param('offline', marks=pytest.mark.jira('388', '828', '833', '918'))]
)
def network(request):
    """ A switch parameter that parametrizes test for testing online and offline functionality. """
    return request.param

У меня есть тест, который я добавлю sh, чтобы добавить дополнительные параметры к , если тест работает и в автономном режиме. Поскольку я не использую приспособление network, отметки не включены (но я хочу, чтобы они были).

@pytest.mark.smoke
@pytest.mark.jira('387', '772', '1009')
@pytest.mark.parametrize('network', ['online', pytest.param('offline', marks=pytest.mark.jira('1036'))])
def test_crud(network):
    ...

У меня вопрос, как мне применить и отметки приспособления, и * 1010? * отметки к тесту?

1 Ответ

0 голосов
/ 23 апреля 2020

Я решил это, добавив

def pytest_runtest_setup(item):
    if item.callspec.params.get('network') == 'offline':
        item.add_marker(pytest.mark.jira('388', '828', '833', '918'))

к conftest.py и удалив приспособление network в пользу добавления @pytest.mark.parametrize('network', ...) к каждому тесту.

...