#python #pytest
Вопрос:
В Pytest я задаюсь вопросом, могу ли я динамически генерировать параметризованные аргументы на основе значения другого прибора, используя pytest_generate_tests
Что я хочу сделать, так это:
import pytest
def pytest_generate_tests(metafunc, request):
if "param" in metafunc.fixturenames and "file" in metafunc.fixturenames:
fn = request.getfixturevalue("file")
parameters = read_json(fn)
metafunc.parameterize(argnames="param", argvalues=parameters)
@pytest.mark.parameterize("file", ('a.json', 'b.json'),)
def test_something(file, param, cleanup_fixture):
output = transfer_func(param)
assert output == True
Это не сработает, так как я не могу использовать request
в крючке? Я не знаю, как я могу получить ценность file
внутри pytest_generate_tests
Причина, по которой я хочу этого добиться, заключается в том, что параметры моих обращений определены в разных файлах json. Пока я могу загрузить файл в тест и просто выполнить итерацию. По сути, он объединяет несколько случаев в один, что не идеально, особенно если у меня есть приспособление для области функций, которое нуждается в некоторой очистке.
Пожалуйста, посоветуйтесь.
Комментарии:
1. светильники выполняются после тестов pytest_generate_tests. (посмотрите правильный порядок). Из того, что я понял из примера использования, вы можете напрямую параметризовать приборы, чтобы любой тест, использующий прибор, был параметризован. Добавьте код и более подробную информацию, если это возможно.