Python 从命令行运行测试时如何覆盖pytest.ini?
我有一个包含多个python包的代码库。还有一个pytest.ini文件,其中包含这些文件的名称 目录结构示例:Python 从命令行运行测试时如何覆盖pytest.ini?,python,pytest,Python,Pytest,我有一个包含多个python包的代码库。还有一个pytest.ini文件,其中包含这些文件的名称 目录结构示例: main_dir | | |--- package1 | |--- package2 | |--- pytest.ini pytest.ini看起来像这样 [pytest.ini] addopts = package1 package2 这个问题是因为pytest.ini我无法仅按包运行测试。例如,py.test package1\现在也为packag
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设置并仅按包运行测试?addopts主要用于配置选项,因为它总是完全添加给定的选项 如果总是添加所有测试文件夹,那么它当然总是查找所有测试您可以使用
-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-ok=package1
-k
用于根据表达式选择测试。为什么在.ini中需要该项?您不能删除addopts=package1 package2
并通过指定路径(即py.test package1
)来运行测试吗?ini用于我们的jenkinsOk的自动测试发现,但为什么您需要ini中的特定条目?还有其他目录。在遗留代码中进行的测试将无法工作。因此,我们希望排除这些测试。我建议使用pytest.mark.legacy
对它们进行标记,并使用py.test-m“not legacy”运行测试。
您是对的。现在我使用norecursedirs
排除不需要运行的遗留测试。