Как использовать прибор в mark.parametrize в pytest - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть сценарий, как показано ниже:

@pytest.fixture(scope="module", params=[5, 10])
def get_data(request):
    data = []
    for i in range(request.param):
        data.append((i, 2))
    return data


@pytest.mark.parametrize(('test_input','expected'), get_data)
def test_data_types(test_input, expected):
    assert (test_input%expected) == 0

, но я получаю ошибку, что «TypeError:« function »объект не повторяется».Как достичь своей цели.Я читал, что мы не можем использовать фикстуру в качестве аргумента в параметризованной тестовой функции, но мне нужна альтернатива.

1 Ответ

0 голосов
/ 17 декабря 2018

Как уже упоминалось, вы можете использовать обычную функцию для получения данных.Вот простой пример.У меня есть функция get_data () в каждом из моих тестовых файлов, которая извлекает данные из разных листов файла Excel.

from utils.excel_utils import ExcelUtils
import pytest


def get_data():
    data = ExcelUtils("inputData.xlsx", "Session").get_input_rows()
    for row in data:
        yield row


@pytest.mark.parametrize("test_input", get_data())
def test_session(test_input):
    print(test_input)
    assert "session" in test_input
...