可以conftest.py从pytest.ini读取一个现有值吗?

时间:2020-04-25 23:26:03

标签: python pytest

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

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

是否可以不必在conftest.py中自己使用configparser?

1 个答案:

答案 0 :(得分:1)

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

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

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(并且{{1}中的fizz设置为buzz以外的其他内容)时,您将获得以下输出:

pytest.ini