我正在用 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/