Как я могу условно пропустить параметризованный сценарий pytest?
Мне нужно пометить определенные тесты, чтобы пропустить. Однако некоторые тесты параметризованы, и мне нужно пропустить только некоторые сценарии.
Я вызываю тест, используя py.test -m "hermes_only"
или же py.test -m "not hermes_only"
по мере необходимости.
Простые тестовые случаи помечены с использованием:
@pytest.mark.hermes_only
def test_blah_with_hermes(self):
Тем не менее, у меня есть несколько параметризованных тестов:
outfile_scenarios = [('buildHermes'),
('buildTrinity')]
@pytest.mark.parametrize('prefix', outfile_scenarios)
def test_blah_build(self, prefix):
self._activator(prefix=prefix)
Я хотел бы, чтобы механизм фильтровал список сценариев или иным образом пропускал определенные тесты, если была определена отметка pytest.
В более общем смысле, как я могу протестировать определение метки pytest?
Спасибо.
1 ответ
Решение
Нашел это! Это элегантно в своей простоте. Я просто отмечаю затронутые сценарии:
outfile_scenarios = [pytest.mark.hermes_only('buildHermes'),
('buildTrinity')]
Я надеюсь, что это помогает другим.
Хорошее решение из документации:
import pytest
@pytest.mark.parametrize(
("n", "expected"),
[
(1, 2),
pytest.param(1, 0, marks=pytest.mark.xfail),
pytest.param(1, 3, marks=pytest.mark.xfail(reason="some bug")),
(2, 3),
(3, 4),
(4, 5),
pytest.param(
10, 11, marks=pytest.mark.skipif(sys.version_info >= (3, 0), reason="py2k")
),
],
)
def test_increment(n, expected):
assert n + 1 == expected