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/)。不过,这似乎有点像用大锤敲碎坚果。有没有更优雅的方法来解决这个问题的建议?
另一种方法可能是为 Django 创建一个测试运行程序,如https://pytest-django.readthedocs.io/en/latest/faq.html#how-can-i-use-manage-py-test-with-中所述pytest-django