【问题标题】:How to insert test-time environment variable with pytest pyproject.toml如何使用 pytest pyproject.toml 插入测试时环境变量
【发布时间】:2021-02-22 21:30:29
【问题描述】:

通常,当使用pytest-env 插件为pytest 定义环境变量时,这是使用pytest.ini 完成的:

[pytest]
env =
    DATA_DIR = data/test_assets

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

[tool.pytest.ini_options]
env = [
    {DATA_DIR = "data/test_assets"}
]

【问题讨论】:

  • @gold_cy 编辑了我的问题以注意插件。我为我的无知道歉。感谢您的耐心等待。我将删除我过时的 cmets。

标签: pytest pyproject.toml


【解决方案1】:

正确的格式是:

env = [
    "DATA_DIR = data/test_assets",
    "ROSETTA = rosetta/main"
]

【讨论】:

  • 这是正确的,正如我在回答中提到的,您需要删除花括号,因为它们与插件不匹配
【解决方案2】:

所以问题在于pytest-env 插件。首先,它似乎已被其维护者抛弃,因为它自 2017 年以来一直没有更新。归结为插件如何解析 toml 文件的部分,如 here 所示。

这个问题特别是这个line。在解析 pyproject.toml 的内容时,它会将您拥有的内容转换为以下内容:

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

这意味着它将您的环境变量转换为具有'{DATA_DIR' 的键,因此它似乎没有按预期工作。您需要切换回用于环境变量的先前格式或删除大括号,因为它们似乎与此插件不匹配。

【讨论】:

    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 2022-10-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 2016-07-08
    • 2020-10-07
    • 2022-11-18
    相关资源
    最近更新 更多