Python 可以在pytest.ini中设置测试的任意配置吗?

Python 可以在pytest.ini中设置测试的任意配置吗?,python,pytest,Python,Pytest,我想为我的测试集中配置,看起来pytest.ini将是一个合适的地方,但我很难找到一个这样的示例/功能 例如,我有一个目录,其中包含测试可能需要的文件,称为“测试资源”。这是我的结构: ├── pytest.ini ├── myproject │ └── someFunctionsOne │ ├── one.py │ └── two.py └── tests ├── integration │ └── someFunctionsOneTest

我想为我的测试集中配置,看起来pytest.ini将是一个合适的地方,但我很难找到一个这样的示例/功能

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

├── 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文件中,那么对于这个项目中的其他开发人员来说,这会让事情变得更清楚——所有测试配置的东西都放在一个地方。我已经为我的应用程序准备了一个配置文件,它在启动时加载,但这是不同的。我想将单元/集成测试配置与我的应用程序配置隔离开来。ini似乎是最好的地方,因为它已经存在并被测试使用。这样,我就不需要创建另一个配置文件,也不需要使用自己的机制来加载它进行测试


而且,我知道没有什么可以阻止我使用configparser,甚至我自己加载和解析pytest.ini,但如果测试已经在使用它,我希望有一个内置功能可以从中读取任意kvs,或者类似的东西,您可以用定义自定义命令行的方式在
pytest.ini
中定义自定义键参数,仅使用以下方法:

(请注意,
pytest\u addoption
hook impls应该位于顶层
conftest.py

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

[pytest]
mykey = buzz
访问测试中的
mykey
值:

def test_spam(request):
    value = request.config.getini("mykey")
    assert value == "buzz"

conftest.py应该位于pytest.ini所在项目的根目录下,对吗?另外,对于什么是
request
有点困惑。那像赛尔夫吗?我没有在我的测试中使用类,那还能用吗?conftest.py应该放在pytest.ini所在项目的根目录下,对吗?是的,最好是把它放在项目根目录中,或者放在测试根目录中(如果有)。另外,对于什么是
request
有点困惑,如果您想访问测试内部(配置、会话、测试用例对象等),可以使用它。我没有在我的测试中使用类,那还能用吗?当然。那么“请求”不需要首先定义为
@pytest.fixture
?我可以用这样的“空”装置吗?对不起,有点超出了问题的范围,只想了解这一部分不用担心<代码>请求是由
pytest
本身实现的预定义装置的一部分。您可以使用我上面链接到的文档中的任何装置,它们都是在测试执行开始时自动实现和加载的。如果您已经安装了插件,那么其他的装置可能由插件提供。运行
pytest--fixtures
列出本地设置中可用的所有装置。
def test_spam(request):
    value = request.config.getini("mykey")
    assert value == "buzz"