Как запустить 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, то оба моих теста пройдут

Вернуться на верх