我在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一个。我可以使用上面的代码执行此操作,还是需要修改它?
答案 0 :(得分:1)
没有必要忽略你的if / else的任何一个分支。最好的办法是运行两次测试套件,一次在Python 2下运行,然后在Python 3下运行,但每次运行都使用不同的数据文件。然后使用"覆盖率组合"合并两次运行的数据,然后从该数据报告。生成的报告将显示if / else正在执行的两半。