Как получить маркеры для py.test в conftest.py? - PullRequest
0 голосов
/ 01 октября 2018

Я запускаю тесты с py.test и хочу получить доступ к маркерам, которые я установил в командной строке.Я попробовал следующий код внутри conftest.py (основываясь на документации, которую я нашел здесь ) в приборе, который используется каждым работающим тестом (т. Е. В приборе, который настраивал тест):

@pytest.fixture
def basedriver(request):
    ...
    node = request.node
    print("Marker: %s" % str(node.get_marker('set1')))
    ...

но когда я запускаю тест следующим образом:

py.test -s -m "set1 or ready"

я получаю следующий вывод

Marker: None

Кажется, я делаю это неправильно.Как это сделать правильно?

В идеале я могу получить строку целом , то есть "set1 or ready" ...

1 Ответ

0 голосов
/ 01 октября 2018

request.node является объектом функции теста, поэтому request.node.get_marker('set1') возвращает маркер, прикрепленный к выполняемому в данный момент тесту.Например, при запуске теста

@pytest.fixture
def basedriver(request):
    node = request.node
    print('Marker:', node.get_marker('set1'))

@pytest.mark.set1
def test_spam(basedriver):
    assert True

def test_eggs(basedriver):
    assert True

будет напечатано

test_spam.py::test_spam Marker: MarkInfo(_marks=[Mark(name='set1', args=(), kwargs={})])
PASSED
test_spam.py::test_eggs Marker: None
PASSED

То, что вам нужно, это переданное значение аргумента командной строки -m.Доступ к нему через конфигурационное приспособление:

@pytest.fixture
def basedriver(pytestconfig):
    markers_arg = pytestconfig.getoption('-m')
    print('markers passed from command line:', markers_arg)
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...