排除覆盖范围内的“其他”条款

时间:2014-10-02 07:56:48

标签: 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一个。我可以使用上面的代码执行此操作,还是需要修改它?

1 个答案:

答案 0 :(得分:1)

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