Как запустить pytest conftest до того, как все будет импортировано
Вот упрощенная версия моей проблемы.
У меня есть приложение на python, структура которого выглядит следующим образом:
my_project
my_app
__init__.py
settings.py
tests
__init__.py
conftest.py
my_test.py
venv
# settings.py
from dotenv import load_dotenv
load_dotenv()
MY_VALUE = os.environ["MY_KEY"]
По некоторым причинам я не хочу добавлять сюда файл .env
. Я также не хочу использовать метод get на os.environ
Я хочу запустить этот тест
# my_test.py
from my_app import settings # I need this for some reasons
def test_something():
assert True
def test_env():
assert os.environ["MY_KEY"] == 'MY_VALUE'
Однако я получаю KeyError
, потому что как только я импортирую settings.py
, запускается строка MY_VALUE = os.environ["MY_KEY"]
, а поскольку MY_KEY
отсутствует в env, я получаю KeyError
.
Я подумал, что я мог бы провести контест следующим образом
import os
from unittest import mock
import pytest
@pytest.fixture(autouse=True)
def set_env(config):
with mock.patch.dict(os.environ, {'MY_KEY': 'MY_VALUE'}):
yield
Но это все та же проблема.
Как я могу обеспечить выполнение этого теста раньше всех остальных.
Также обратите внимание, что если я закомментирую from my_app import settings
, то оба моих теста пройдут