我想集中进行测试的配置,似乎可以使用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或类似内容那
答案 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"