pytest - Как узнать, какие маркеры выбраны - PullRequest
2 голосов
/ 28 сентября 2019

Есть ли в pytest способ узнать, какие маркеры выбраны из командной строки?

У меня есть некоторые тесты, помеченные как "медленные", которые требуют тяжелой обработки.Я хочу обработать обработку, только если активирован медленный маркер.

heavy_var = None

def setup_module(module):
    global heavy_var

    # Need help here!?
    if markers["slow"]:
        heavy_var = treatment()


def test_simple():
    pass


@pytest.mark.slow():
def test_slow():
    assert heavy_var.x == "..."

Как узнать, выбран медленный маркер или нет?Когда я вызываю pytest с -m not slow markers["slow"], будет False, иначе True.

1 Ответ

2 голосов
/ 28 сентября 2019

Если вам нужно запустить какой-то код, только если были выбраны тесты, помеченные slow, вы можете сделать это, отфильтровав тестовые элементы в модульном приборе, который заменяет setup_module.Пример:

@pytest.fixture(scope='module', autouse=True)
def init_heavy_var(request):
    for item in request.session.items:
        if item.get_closest_marker('slow') is not None:
            # found a test marked with the 'slow' marker, invoke heavy lifting
            heavy_var = treatment()
            break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...