gpt4 book ai didi

python - python覆盖模块可以有条件地忽略单元测试中的行吗?

转载 作者:太空宇宙 更新时间:2023-11-03 12:57:26 25 4
gpt4 key购买 nike

使用 nosetests 和覆盖模块,我想要代码的覆盖报告来反射(reflect)被测试的版本。考虑这段代码:

import sys
if sys.version_info < (3,3):
print('older version of python')

当我在 python 版本 3.5 中进行测试时,print() 显示为未经测试。我想让覆盖忽略那一行,但只有当我使用 python 版本 3.3+ 进行测试时才可以

有没有一种方法可以在 print() 语句上执行类似 #pragma: no cover 的操作,仅当 sys.version_info 为不小于 (3,3)?实际上,我想做这样的事情:

import sys
if sys.version_info < (3,3):
print('older version of python') # pragma: [py26,py27,py32] no cover

最佳答案

另一种选择是为不同版本的 Python 使用不同的 .coveragerc 文件,并为不同版本设置不同的 exclude_lines 正则表达式。

我看到有些人使用不同的注释字符串,例如,# no cover 3.x vs # no cover 2.x

但请记住,您根本不必使用注释编译指示。正则表达式应用于整行。例如,如果您对条件使用简短的表示法,例如:

if PY2:
blah_py2_stuff_blah()

那么你的 Python 3 的 .coveragerc 文件可能有:

[report]
exclude_lines =
# pragma: no cover
if PY2:

然后 if PY2: 行将被排除,您无需任何额外的评论或努力。

关于python - python覆盖模块可以有条件地忽略单元测试中的行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35513257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com