Использование прибора внутри pytest.mark.parametrize - PullRequest
0 голосов
/ 07 января 2019

Скажем, у меня есть тестовая функция, которая принимает параметризацию record как диктовку, где одним из ее значений является прибор, который уже определен.

Например, у нас есть приспособление:

@pytest.fixture
def a_value():
    return "some_value"

И функция проверки:

@pytest.mark.parametrize("record", [{"a": a_value, "other": "other_value"},
                                    {"a": a_value, "another": "another_value"}])
def test_record(record):
    do_something(record)

Теперь я знаю, что это можно решить путем передачи прибора в функцию тестирования и соответствующего обновления записи, например:

@pytest.mark.parametrize("record", [{"other": "other_value"},
                                    {"another": "another_value"}])
def test_record(a_value, record):
    record["a"] = a_value
    do_something(record)

Но мне было интересно, есть ли способ сделать это без этого «обходного пути», когда у меня есть много приборов, которые уже определены, и я просто хочу использовать их в каждой параметризованной записи, которую я передаю функции.

Я уже проверил этот вопрос , хотя, похоже, он не совсем подходит для моего случая. Не могу найти правильного использования из ответов там.

1 Ответ

0 голосов
/ 07 января 2019

Одним из решений является создание record в качестве прибора вместо использования parametrize и принятие a_value в качестве параметра:

@pytest.fixture
def record(a_value):
    return {
        'a': a_value,
        'other': 'other_value',
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...