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

Ran*_*dra 9 python pytest

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

示例目录结构:

main_dir
  |
  |
  |--- package1
  |
  |--- package2
  |
  |--- pytest.ini
Run Code Online (Sandbox Code Playgroud)

pytest.ini 看起来像这样

[pytest.ini]
addopts = package1 package2
Run Code Online (Sandbox Code Playgroud)

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

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

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

Sil*_*Guy 7

您可以使用-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`.
Run Code Online (Sandbox Code Playgroud)

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

#pytest.ini file
[pytest]
   addopts = 
    -k="package1 or package2"
Run Code Online (Sandbox Code Playgroud)

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


小智 2

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

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