簡體   English   中英

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

[英]How to have 100% coverage on branching python versions?

在某些代碼中,我從Python 2移植到了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下運行。 我可以添加一個pragma: no test對Python 2分支進行pragma: no test ,但感覺像是在作弊。

所以,問題:

  • 我如何在沒有雜物的情況下獲得上述內容的100%測試覆蓋率
  • 如何重構此代碼,以使我完全沒有分支?

為什么不測量兩個版本的覆蓋率,然后合並數據並在合並結果中尋找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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM