Как вставить переменную среды во время тестирования с помощью pytest pyproject.toml

Обычно при определении переменной среды для использования pytest-env плагин, это делается с помощью pytest.ini:

      [pytest]
env =
    DATA_DIR = data/test_assets

pytest поддерживает pyproject.tomlс 6.0. Как предполагается определять переменную среды в этом формате? Следующее не работает:

      [tool.pytest.ini_options]
env = [
    {DATA_DIR = "data/test_assets"}
]

2 ответа

Решение

Итак, проблема заключается в pytest-envплагин. Прежде всего, похоже, что его разработчики отказались от него, поскольку он не обновлялся с 2017 года. Все сводится к тому, как плагин анализирует часть tomlфайл, как показано здесь .

Проблема именно в этой строке . При разборе содержимого вашего pyproject.toml он преобразует то, что у вас есть, в следующее:

      part = e.partition("=")
# ('{DATA_DIR ', '=', ' "data/test_assets"}')
key = part[0].strip()
# '{DATA_DIR'

Это означает, что он преобразует вашу переменную среды, чтобы иметь ключ '{DATA_DIR'поэтому, похоже, он не работает должным образом. Вам нужно либо вернуться к предыдущему формату, который вы использовали для переменных среды, либо удалить фигурные скобки, поскольку они, похоже, не связаны с этим плагином.

Правильный формат:

      env = [
    "DATA_DIR = data/test_assets",
    "ROSETTA = rosetta/main"
]
Другие вопросы по тегам