2014-10-02 45 views
1

我在python中創建了一個庫,它與python2和python3都兼容。我決定使用python3中的一個功能(即metaclass上的__prepare__方法),並在python2中使用一點小技巧(一個類的計數器)來達到同樣的目的。排除覆蓋範圍內的'else'子句

我有一個PEP3115常數簡單地定義爲:

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

,所以我可以使用:

if PEP3115: 
    # python3 logic 
else: 
    # python2 logic 

然後,如果我添加if PEP3115:爲忽略行.coveragerc我得到忽略了python3邏輯。不過,我還想爲python3測試創建一個不同的.coveragerc文件,它將忽略python2邏輯,但計數python3之一。我可以用上面的代碼來做,還是需要修改它?

回答

1

有沒有必要忽略你的if/else的分支。最好的辦法是在Python 2下運行測試套件兩次,然後在Python 3下再次運行測試套件,但在每次運行時使用不同的數據文件。然後使用「coverage coverage」合併兩次運行的數據,然後從該數據報告。結果報告將顯示正在執行的if/else的兩個部分。