#python #pytest #parametrized-testing
#python #pytest #параметризованное тестирование
Вопрос:
Я знаю, что невозможно добавить больше тестов внутри приборов, потому что они выполняются во время тестирования, а тесты генерируются во время сбора.
Но я хочу иметь возможность генерировать параметры для теста на основе пути к тестовой функции (к модулю, в котором находится тестовая функция).
В принципе, я хочу что-то подобное:
@pytest.mark.parametrize(
argnames='letter',
argvalues=lambda request: list(zip(request.fspath)),
indirect=True
)
def test_foo(letter):
assert letter
Он должен напечатать путь к модулю, буква за буквой в качестве параметра функции:
foo[/]
foo[t]
foo[e]
foo[s]
foo[t]
foo[.]
foo[p]
foo[y]
Этот код (выше) окончательно не работает, но, может быть, есть способ использовать fspath в качестве аргумента для параметризации?
Комментарии:
1.
list(zip(__file__))
? Илиlist(zip(pathlib.Path(__file__).name))
любая другая часть имени файла модуля, которая вам нужна.2. Да, вероятно, я буду придерживаться
__file__
. Для декоратора тестов этого достаточно. Я думал об использовании его внутри внешней функции (вместоlambda
, и эта функция может находиться в другом модуле, чем тест, поэтому необходим fspath . Но если больше ничего не осталось, пусть это есть__file__
в декораторе. Спасибо.