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

标签 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我自己,但如果测试已经在使用它,我希望有一个内置功能可以从中读取任意 kv 或类似的东西。

最佳答案

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

# conftest.py

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

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

您现在可以定义 mykeypytest.ini :
[pytest]
mykey = buzz

访问 mykey测试中的值(value):
def test_spam(request):
    value = request.config.getini("mykey")
    assert value == "buzz"

关于python - 可以在 pytest.ini 中设置测试的任意配置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61432346/

相关文章:

python - 使用 pytest 使单一假设案例失败?

django - 需要在 pytest 工厂中覆盖 django auto_now_add

python - PyTest:跳过整个模块/文件(python 2 和 3)

python - 在 PostgreSQL、Python、Jinja2 上编码

python - PyQt4:如何将两个对象添加到中央小部件并显示两个视频

javascript - 使 CryptoJS 和 pycrypto 兼容

python - PyCharm + cProfile + py.test --> pstat 快照 View +调用图为空

python - 使用 tensorflow 的 tpu_estimator() 生成模型?

python - 生成二维条形码并排列在网格上以进行批量打印

Django 表单测试失败