将 python-dotenv 与 pytest 一起使用的最佳方法,或使用单独配置的 pytest 测试/开发环境的最佳方法

wua*_*min 4 python testing environment-variables pytest python-3.x

我想在我的 python 项目中使用 python dotenv-lib。我的开发环境应该使用 .env-file 并且测试套件(pytest)应该自动使用 .env.test 。

直到现在我还没有找到令人满意的解决方案。

我对python不是很熟悉。也许有人可以指出我正确的方向。

我应该在 pytest 钩子中加载 .env.test 文件吗?

Lua*_*ual 10

对于 2019 年或以后来的任何人:

您可以使用pytest-dotenv


wua*_*min 6

经过一番调查后,我得出的结论是不使用 python-dotenv。我最终使用了很酷的库simple-settings和 pytest hooks。很好的解决了我的需求!simple-settings 可以从多种文件类型加载设置。加载哪个设置文件可以通过环境变量决定。

如果有人想了解有关 pytest 及其 conftest 文件的知识,以下帖子可能会非常有帮助:In py.test, what is the use of conftest.py files?

这是我的 conftest.py 文件,其中实现了两个钩子:

import os

def pytest_configure(config):
  os.environ['SIMPLE_SETTINGS'] = 'config.test'
  return config

def pytest_unconfigure(config):
  os.environ['SIMPLE_SETTINGS'] = 'config.development'
  return config
Run Code Online (Sandbox Code Playgroud)

如果我使用 pytest 运行一些测试,则会设置相应的环境变量。所以我的测试套件自动使用正确的设置。