如何在从 manage.py 中定义的环境变量导入设置的项目上运行 django-pytest

Kur*_*eek 5 python django pytest pytest-django

我正在处理一个 Django 项目,其中SECRET_KEY在.env文件中定义了诸如此类的设置,并manage.py使用python-dotenv设置环境变量,如下所示:

from dotenv import load_dotenv, find_dotenv

if __name__ == "__main__":
    load_dotenv(find_dotenv())
    # usual manage.py code
Run Code Online (Sandbox Code Playgroud)

然后settings.py简单地从环境变量定义模块级设置,例如,

SECRET_KEY = os.environ['SECRET_KEY']
Run Code Online (Sandbox Code Playgroud)

我现在正在切换到pytest-django进行单元测试。然而,问题是如果不python manage.py先运行,环境变量就不会设置,所以我最终得到

E   KeyError: 'SECRET_KEY'
Run Code Online (Sandbox Code Playgroud)

我现在想解决这个问题的方法是定义一个自定义操作来注册manage.py以运行pytest(遵循https://docs.djangoproject.com/en/2.0/howto/custom-management-commands/)。不过,这似乎有点像用大锤敲碎坚果。有没有更优雅的方法来解决这个问题的建议?