python - 排除 coverage 中的 'else' 子句

标签 python testing backwards-compatibility coverage.py

我正在用 python 创建一个库,它与 python2 和 python3 都兼容。我决定使用 python3 中可用的功能(即元类上的 __prepare__ 方法),并在 python2 中使用一些 hack(类上的计数器)来达到相同的目的。

我有一个简单定义为 PEP3115 的常量:

PEP3115 = sys.version_info >= (3, 0)                                            

所以我可以使用:

if PEP3115:
    # python3 logic
else:
    # python2 logic

然后,如果我将 if PEP3115: 作为忽略行添加到 .coveragerc 中,我将忽略 python3 逻辑。但是,我还想为 python3 测试创建一个不同的 .coveragerc 文件,它将忽略 python2 逻辑但将 python3 算作一个。可以用上面的代码实现吗,还是需要修改?

最佳答案

没有必要忽略 if/else 的任何一个分支。最好的办法是运行测试套件两次,一次在 Python 2 下,然后在 Python 3 下再次运行,但每次运行都使用不同的数据文件。然后使用“coverage combine”合并两次运行的数据,然后根据该数据生成报告。生成的报告将显示正在执行的 if/else 的两半。

关于python - 排除 coverage 中的 'else' 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26156525/

相关文章:

python - 从 R 或 Python 中的字符串中提取

python - 跨平台,语言不可知GUI标记语言?

testing - Golang 测试模拟函数最佳实践

spring - Spring JDBC 测试的事务回滚

java - 标记一个 fun/property 仅在 Kotlin/Java 中使用

python - 从数据框python中的特定位置删除具有缺失值的行

python - 我可以在空间上连接 Python Geopandas 上几何以外的列吗?

jquery - 有没有我可以练习选择器用法的 jquery 模拟器

Python API 兼容性检查器

android - 在 API 1.6 上部署 VerifyError