如何在分支python版本上获得100%的覆盖率?

时间:2019-03-21 10:07:57

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

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

b

因为GTK-3 if six.PY2: _text = widget.get_text().strip().decode('utf-8') else: _text = widget.get_text().strip() 在Python 2中返回字节,而在Python 3中返回Unicode。这是PITA,因为我将widget.get_text()传递给需要Unicode的方法。因此,在Python 2中,我必须解码得到的所有数据。

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

所以,问题:

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

1 个答案:

答案 0 :(得分:2)

为什么不测量两个版本的覆盖率,然后合并数据并在合并结果中寻找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