【问题标题】:How to have 100% coverage on branching python versions?如何对分支 python 版本有 100% 的覆盖率?
【发布时间】:2019-03-21 10:07:57
【问题描述】:

在我从 Python 2 移植到 Python 3 的一些代码中,但仍然需要在两者上运行,我有类似的东西:

if six.PY2:
    _text = widget.get_text().strip().decode('utf-8')
else:
    _text = widget.get_text().strip()

因为 GTK-3 widget.get_text() 在 Python 2 中返回字节,在 Python 3 中返回 unicode。这是一个 PITA,因为我将 _text 传递给的方法需要 unicode。因此,在 Python 2 中,我必须解码我得到的任何数据。

我有模拟 widget.get_text 的单元测试,但很明显,这些单元测试运行在一个且只有一个版本的 Python 下。我可以在 Python 2 分支中添加 pragma: no test,但这感觉像是作弊。

所以,问题:

  • 如何在没有编译指示的情况下使用上述获得 100% 的测试覆盖率。
  • 如何重构此代码以使我完全没有分支?

【问题讨论】:

    标签: python python-3.x python-2.7 code-coverage gtk3


    【解决方案1】:

    为什么不在两个版本下测量覆盖率,然后结合数据并在结合结果中寻找 100%?

    例如:

    $ python2 -m coverage run --parallel run_the_tests.py
    $ python3 -m coverage run --parallel run_the_tests.py
    $ python3 -m coverage combine
    $ python3 -m coverage html
    

    【讨论】:

    • 那是……不知道你能做到这一点!您能否向我指出有关如何执行此操作的文档?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2012-01-11
    • 2018-01-15
    • 2018-10-30
    • 2017-06-27
    • 2018-03-16
    相关资源
    最近更新 更多