2014-10-02 114 views
1

我在python中创建了一个库,它与python2和python3都兼容。我决定使用python3中的一个功能(即metaclass上的__prepare__方法),并在python2中使用一点小技巧(一个类的计数器)来达到同样的目的。排除覆盖范围内的'else'子句

我有一个PEP3115常数简单地定义为:

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

,所以我可以使用:

if PEP3115: 
    # python3 logic 
else: 
    # python2 logic 

然后,如果我添加if PEP3115:为忽略行.coveragerc我得到忽略了python3逻辑。不过,我还想为python3测试创建一个不同的.coveragerc文件,它将忽略python2逻辑,但计数python3之一。我可以用上面的代码来做,还是需要修改它?

回答

1

有没有必要忽略你的if/else的分支。最好的办法是在Python 2下运行测试套件两次,然后在Python 3下再次运行测试套件,但在每次运行时使用不同的数据文件。然后使用“coverage coverage”合并两次运行的数据,然后从该数据报告。结果报告将显示正在执行的if/else的两个部分。