Как я могу убедиться, что тесты с маркером выполняются только в том случае, если это явно задано в pytest? - PullRequest
2 голосов
/ 30 мая 2019

У меня есть несколько тестов, которые я пометил соответствующим маркером.Если я запускаю pytest, по умолчанию они запускаются, но я хотел бы пропустить их по умолчанию.Единственный вариант, который я знаю, - это явно сказать «не маркер» при вызове pytest, но я бы хотел, чтобы они не запускались по умолчанию, если маркер явно не задан в командной строке.

1 Ответ

2 голосов
/ 30 мая 2019

Небольшая модификация примера в Контроль пропуска тестов в соответствии с параметром командной строки :

# conftest.py

import pytest


def pytest_collection_modifyitems(config, items):
    keywordexpr = config.option.keyword
    markexpr = config.option.markexpr
    if keywordexpr or markexpr:
        return  # let pytest handle this

    skip_mymarker = pytest.mark.skip(reason='mymarker not selected')
    for item in items:
        if 'mymarker' in item.keywords:
            item.add_marker(skip_mymarker)

Пример тестов:

import pytest


def test_not_marked():
    pass


@pytest.mark.mymarker
def test_marked():
    pass

Запуск тестовс маркером:

$ pytest -v -k mymarker
...
collected 2 items / 1 deselected / 1 selected
test_spam.py::test_marked PASSED
...

Или:

$ pytest -v -m mymarker
...
collected 2 items / 1 deselected / 1 selected
test_spam.py::test_marked PASSED
...

Без маркера:

$ pytest -v
...
collected 2 items

test_spam.py::test_not_marked PASSED
test_spam.py::test_marked SKIPPED
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...