Мне нужен способ создать словарь, содержащий уникальные пути для каждого модуля/файла pytest в данном каталоге. Он должен быть доступен еще до запуска какого-либо теста для определения путей к файлу:
TEST_DIRS = {}
path1 = TEST_DIRS['path']
path2 = TEST_DIRS['input']
def test_something():
target = path1 / 'input_file'
....
def test_another_thing():
....
Кроме того, должен существовать файл конфигурации каталога, например conftest, для выполнения генерирующих действий, необходимых каждому модулю. Генератор создаст каталоги на основе имени теста.
Я пробовал использовать файл conftest.py и pytest_collection_modify_items, но он по-прежнему заставляет TEST_DIRS работать только внутри тестовой функции, а не перед ними.
def pytest_collection_modifyitems(items):
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
for item in items:
module_name = item.module.__name__
test_paths = {
key: value.format(test_name=module_name, timestamp=timestamp)
for key, value in BASE_TEST_DIRS.items()
}
test_paths = {
key: home / Path(value)
for key, value in test_paths.items()
}
for key, path in test_paths.items():
if key.startswith('output'):
if not os.path.exists(path):
os.makedirs(path)
item.module.TEST_DIRS = test_paths
Подробнее здесь: https://stackoverflow.com/questions/790 ... ery-module