我有一个包含多个 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 设置并仅以包方式运行测试?
您可以使用-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
[pytest]
   addopts = 
    -k="package1 or package2"
并且,在运行测试时,您可以使用pytest -o k=package1. -k用于根据表达式选择测试。