如何使用 pytest pyproject.toml 插入测试时环境变量

Sea*_*123 10 pytest pyproject.toml

pytest通常,在定义使用插件的环境变量时pytest-env,可以使用以下命令完成pytest.ini

[pytest]
env =
    DATA_DIR = data/test_assets
Run Code Online (Sandbox Code Playgroud)

pytestpyproject.toml从6.0开始支持。环境变量应该如何以这种格式定义?以下不起作用:

[tool.pytest.ini_options]
env = [
    {DATA_DIR = "data/test_assets"}
]
Run Code Online (Sandbox Code Playgroud)

Sea*_*123 17

正确的格式是:

env = [
    "DATA_DIR = data/test_assets",
    "ROSETTA = rosetta/main"
]
Run Code Online (Sandbox Code Playgroud)


aws*_*ice 4

所以问题出在pytest-env插件上。首先,它似乎已被维护者放弃,因为它自 2017 年以来就没有更新过。这取决于插件如何解析文件的部分,toml如下所示

问题具体是这一。解析您的内容时,pyproject.toml它会将您的内容转换为以下内容:

part = e.partition("=")
# ('{DATA_DIR ', '=', ' "data/test_assets"}')
key = part[0].strip()
# '{DATA_DIR'
Run Code Online (Sandbox Code Playgroud)

'{DATA_DIR'这意味着它会转换您的环境变量以获取其为何似乎未按预期工作的关键。您需要切换回之前用于环境变量的格式,或者删除大括号,因为它们似乎与此插件不匹配。