Как я могу получить доступ ко всем маркерам в приборе pytest? - PullRequest
0 голосов
/ 10 января 2020

Я использую pytest и хочу пометить свои тесты маркерами, которые укажут устройству, какую страницу загружать в мой драйвер. Это легко работает с объектом контекста поведения, но я не могу найти, как это сделать с pytest.

Для этого кода, например

import pytest

@pytest.fixture
def text(request):
    if 'hello' in X:
        return 'found it!'
    return 'did not find it :('

@pytest.mark.hello
def test_hello(text):
    assert text == 'found it!'

что должно быть X, чтобы я мог передать это тестовое задание? Я попытался request.node.own_markers, но это просто дает мне пустой список, хотя я пометил тест.

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Я нашел ответ, играя вокруг. Прибор был помечен как «scope = module», а моя единственная тестовая функция имела маркер. Поэтому это было вне области видимости для прибора, отсюда и пустой список. Когда я установил, что у прибора есть область действия по умолчанию, маркер был найден.

0 голосов
/ 10 января 2020

Существует либо request.node.own_markers или request.node.iter_markers(), который даст вам доступ к маркерам узла

, например:

(Pdb) request.node.own_markers
[Mark(name='hello', args=(), kwargs={})]
(Pdb) request.node.iter_markers()
<generator object Node.iter_markers.<locals>.<genexpr> at 0x7f3a601a60a0>
(Pdb) p list(request.node.iter_markers())
[Mark(name='hello', args=(), kwargs={})]

, эти два будут отличаться (например), если маркеры применяются к более широкой области видимости

. Есть несколько примеров в документах маркеров (ни один из них, использующий request, но item такой же в тех примерах (которые вместо этого используют ловушки Pytest) )

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