доступ к request.fspath для генерации параметров для теста

#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__ в декораторе. Спасибо.