【问题标题】:Excluding the 'else' clause in coverage排除覆盖范围内的“else”条款
【发布时间】:2014-10-02 07:56:47
【问题描述】:

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

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

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

所以我可以使用:

if PEP3115:
    # python3 logic
else:
    # python2 logic

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

【问题讨论】:

    标签: python testing backwards-compatibility coverage.py


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 2014-10-24
      • 2018-07-27
      • 2015-07-27
      • 2018-12-04
      • 2021-12-29
      • 1970-01-01
      相关资源
      最近更新 更多