Как я могу условно пропустить параметризованный сценарий 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
Другие вопросы по тегам