可以在pytest.ini中设置测试的清单配置吗?

时间:2020-04-25 20:43:30

标签: python pytest

我想集中进行测试的配置,似乎可以使用pytest.ini了,但是我很难为此找到一个示例/功能。

例如,我有一个目录,其中包含我的测试可能需要的文件,称为“ test_resources”。这是我的结构:

├── pytest.ini
├── myproject
│    └── someFunctionsOne
│        ├── one.py
│        └── two.py
└── tests
    ├── integration
    │   └── someFunctionsOneTestblah.py
    ├── test_resources
    │   ├── sample-data.json
    │   └── test-data-blahablahb.csv
    └── unit
        └── someFunctionsOne
            ├── one.py
            └── two.py

我想在pytest.ini中设置“ test_resources”的路径。因此,集成和单元测试知道在哪里找到该文件夹​​-我想避免在测试文件本身中像这样硬编码路径。

是否有一项功能可以在pytest.ini中设置任意配置并从测试中检索它?我怀疑我的测试可能还有其他类似的配置设置,如果所有这些都保存在pytest.ini文件中,那么对于该项目中的其他开发人员来说,事情就会变得更加清楚-所有测试配置的地方都可以使用。我的应用程序已经有一个配置文件,该文件在启动时会加载,但事实并非如此。我想将单元/集成测试配置与我的应用程序配置隔离。 pytest.ini似乎是最好的地方,因为它已经存在并已被测试使用。这样,我就不需要创建另一个配置文件,也不需要滚动自己的机制来为测试加载该文件

此外,我知道并没有阻止我自己使用configparser甚至加载和解析pytest.ini的方法,但是如果测试已经在使用它,我希望可以使用内置功能从中读取任意kvs或类似内容那

1 个答案:

答案 0 :(得分:2)

仅使用Parser.addini方法,以与定义自定义命令行参数相同的方式用pytest.ini定义自定义键:

# conftest.py

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

(请注意,pytest_addoption钩子impls应该位于顶层conftest.py中。)

您现在可以在mykey中定义pytest.ini

[pytest]
mykey = buzz

在测试中访问mykey值:

def test_spam(request):
    value = request.config.getini("mykey")
    assert value == "buzz"
相关问题