首页 > 解决方案 > conftest.py 可以读取 pytest.ini 中的现有值吗?

问题描述

conftest.py 可用于定义 pytest.ini 中的属性,parser.addini()但 conftest.py 也可以从 pytest.ini 读取现有值吗?

我想查看 pytest.ini 中一个参数的值,并用它来设置 pytest.ini 中另一个参数的默认值

这是否可能无需在 conftest.py 中自己使用 configparser?

标签: pythonpytest

解决方案


我想查看 pytest.ini 中一个参数的值,并用它来设置 pytest.ini 中另一个参数的默认值

最好是添加一个自定义的 impl 的pytest_configure钩子。示例:假设您在 : 中定义了两个自定义 ini 选项conftest.py

def pytest_addoption(parser):
    parser.addini("fizz", help="help for my key", default="buzz")
    parser.addini("spam", help="help for my key", default="eggs")

现在spam应该设置为bacon无论何时fizz不是buzz(不是默认值)。扩展conftest.py

def pytest_configure(config):
    fizz = config.getini("fizz")
    spam = config.getini("spam")
    print("values parsed from ini: fizz:", fizz, "spam:", spam)

    if not fizz == "buzz":
        # override parsed ini value
        config._inicache["spam"] = "bacon"

    print("spam was replaced to:", config.getini("spam"))

运行时pytest -s(并fizz设置为 in 以外buzz的其他值pytest.ini),您将获得以下输出:

values parsed from ini: fizz: fuzz spam: eggs
spam was replaced to: bacon
============================= test session starts =============================
...

推荐阅读