1

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

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

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

所以我可以使用:

if PEP3115:
    # python3 logic
else:
    # python2 logic

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

4

1 回答 1

1

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

于 2014-10-02T14:30:17.877 回答