2014-02-27 46 views
7

我有一個python程序,它通過多次運行不同輸入來測試,並將輸出與參考結果進行比較。如何在多個Python腳本運行中獲得組合代碼覆蓋率

我想獲得所有測試組合的代碼覆蓋率,所以我可以看到是否有額外的輸入集應該用來獲得完整的覆蓋率。我已經看過覆蓋範圍模塊,但無法弄清楚我如何才能做到這一點。

任何線索?

回答

3

Ned Batchelder的coverage.py有一個feature to combine the results of multiple runs,這似乎正是你在找什麼。

+0

是的,這是完全正確的。您可以使用它跨多個數據集,跨多個Python版本或多個依賴項選擇(例如,不同版本的中間件或支持模塊)運行。您可以在shell腳本中「編排」多個測試運行,但您可以做得更好:[tox](https://tox.readthedocs.org/en/latest/)測試運行器將自動創建原始虛擬環境並在那些運行測試;強烈建議超出最簡單的測試設置。 –

9

如果在同一臺機器上運行,請使用-a選項運行該選項,該選項可在多個調用之間累積覆蓋率數據。

例子:

coverage erase 

coverage run -a <command> [arguments, ...] 

repeat coverage run -a <command> ... as many times as needed. 

coverage report 

coverage html 

DOC:http://coverage.readthedocs.org/en/latest/cmd.html#data-file

希望這有助於。

相關問題