如何解决Python:将 .env (dotenv) 文件与 tox 结合使用 tox.ini.envmain.pytest_main.py
在我的 Python 项目中,我正在从 .env
文件中读取环境变量。我实际上是在使用 pydantic
来读取/验证环境变量。
使用 tox
时,.env
文件将被完全忽略。我想知道如何让 tox
承认 .env
的存在?
这是我的tox.ini
[tox]
envlist = py39
[testenv]
deps = -r requirements-dev.txt
commands = pytest {posargs}
我的 .env
文件:
ENV_STATE="prod" # dev or prod
解决方法
起初,我想可能 pydantic
将 .env
文件的内容加载为环境变量,这就是为什么我写这个作为我的第一个答案:
原答案
tox
做了一些隔离工作,因此您的构建/测试更具可重现性。
这意味着例如环境变量被过滤掉,除非你将它们列入白名单。
您可能需要设置
passenv = YOUR_ENVIRONMENT_VARIABLE
更新答案
这似乎根本不是 tox
问题。
我刚刚用 pydantic
和 dotenv
创建了一个简单的项目,它与 tox
一起工作就像一个魅力。
tox.ini
[tox]
envlist = py39
skipsdist = True
[testenv]
deps = pydantic[dotenv]
commands = pytest {posargs}
.env
ENVIRONMENT="production"
main.py
from pydantic import BaseSettings
class Settings(BaseSettings):
environment: str
class Config:
env_file = ".env"
env_file_encoding = "utf-8"
test_main.py
from main import Settings
def test_settings():
settings = Settings(_env_file=".env")
assert settings.environment == "production"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。