В моем наборе тестов у меня есть разные тесты на интеграцию и стабильность.
Например,
@pytest.mark.integration
def test_integration_total_devices(settings, total_devices):
assert total_devices == settings['integration']['nodes']['total']
@pytest.mark.stability
def test_stability_total_devices(settings, total_devices):
assert total_devices == settings['stability']['nodes']['total']
Как вы можете заметить, это точно такой же код, просто читаядругой параметр из конфига.
Как я могу предотвратить эту ситуацию дублирования кода?Значения настроек различны, поэтому я не могу просто:
@pytest.mark.integration
@pytest.mark.stability
def test_integration_total_devices(settings, total_devices):
assert total_devices == settings['nodes']['total']
Я забыл упомянуть (спасибо, что напомнил @dzejdzej), что кажется, что параметризация pytest не работает.Это работает, когда я хочу выполнить обе «метки», но цель метки - просто запустить тесты одного из них независимо, например, pytest -m integration
.Однако, насколько я тестировал, всякий раз, когда я устанавливаю параметризацию, он запускает оба.
@pytest.mark.parametrize('type', (
pytest.param('stability', marks=pytest.mark.stability),
pytest.param('integration', marks=pytest.mark.integration),
))
@pytest.mark.integration
@pytest.mark.stability
def test_total_devices(settings, total_devices, type):
assert total_devices == settings[type]['nodes']['total']