从命令行运行测试时如何覆盖pytest.ini?

时间:2015-06-24 06:24:17

标签: python pytest

我有一个包含多个python包的代码库。还有一个pytest.ini文件,其中包含这些文件的名称。

示例目录结构:

main_dir
  |
  |
  |--- package1
  |
  |--- package2
  |
  |--- pytest.ini

pytest.ini看起来像这样

[pytest.ini]
addopts = package1 package2

问题是因为pytest.ini我无法以包的方式运行测试。例如,py.test package1\现在也运行package2测试的测试。

如果删除pytest.ini文件,该命令将按预期工作。我看到的唯一选择是维护一个未提交的pytest.ini版本,我会根据需要不断更改。

如何覆盖pytest.ini设置并仅以包方式运行测试?

3 个答案:

答案 0 :(得分:1)

addopts主要用于配置选项,因为它总是完全添加给定的选项

如果总是添加所有测试文件夹,那么它当然总能找到所有测试

答案 1 :(得分:0)

您可以使用 -o/--override-ini。来自 pytest 帮助文本:

 -o OVERRIDE_INI, --override-ini=OVERRIDE_INI
                    override ini option with "option=value" style, e.g. `-o
                    xfail_strict=True -o cache_dir=cache`.

但是您的情况需要另一种解决方法,因为您的 addopts 选项不是 option=value 形式,因为它是一个位置参数。

#pytest.ini file
[addopts]
    -k="package1 or package2"

而且,在运行测试时,您可以使用 pytest -o k=package1-k 用于根据表达式选择测试。

答案 2 :(得分:0)

pytest -c MyTestGetJson.ini
pytest -c MyTestGetXML.ini