Я пишу плагин Pytest с приспособлением, у которого есть побочный эффект установки некоторых желаемых макетов.Я хотел бы написать простую метку, которая позволит пользователю вызывать эту настройку прибора до запуска теста, без необходимости включать прибор в параметры функции тестирования - по сути, «вводя» прибор с помощью метки.Я рассуждаю так, что пользователь может захотеть смоделированную настройку, не нуждаясь в возвращаемом значении самого прибора, и в этом случае мне кажется более интуитивно понятным использовать метку, чем требовать, чтобы он объявил прибор, который не будет использовать.
Как я могу использовать метку, чтобы требовать приспособления в pytest?Глядя на документы, кажется, что я хочу подключиться к чему-то вроде pytest_collection_modifyitems
, проверить соответствующую отметку на каждом элементе с помощью Item.iter_markers
, а затем каким-то образом обновить список приборов.Однако, читая код, я не могу понять, как именно запустить эту настройку прибора.
Вот упрощенный пример того, как выглядит данный прибор:
@pytest.fixture
def mocks(mocker):
ret_val = 10
mocker.patch('path.to.patch', return_value=ret_val)
return ret_val
Вот что пользователь может сделать, чтобы настроить макеты сейчас:
def test_mocks(mocks):
# 'path.to.patch' will be mocked in this test
# ... test code ...
Но вот как мог бы выглядеть тест, если бы прибор можно было запустить с помощью метки:
@pytest.mark.mocks
def test_mocks():
# 'path.to.patch' will be mocked in this test, too
# ... test code ...