簡體   English   中英

獲取Python的coverage.py來收集導入它的模塊的覆蓋率?

[英]Getting Python's coverage.py to gather coverage for the module that imports it?

我一直在玩弄coverage.py,但似乎無法獲取它來收集__main__模塊的覆蓋范圍。

我在Windows上,喜歡使用IDLE破解腳本。 F5編輯命中循環確實非常方便,快速且有趣。 不幸的是,coverage.py看起來不能夠(或不願)收集主模塊的覆蓋率-在下面的代碼中,它報告未收集任何數據。 我的代碼如下所示:

import coverage
cov = coverage.coverage()
cov.start()

def CodeUnderTest():
  print 'do stuff'
  return True

assert CodeUnderTest()

cov.stop()
cov.save()
cov.html_report()

有人有想法么? 我嘗試了多種選擇進行覆蓋,但無濟於事。 似乎IDLE創建的環境對覆蓋不是很友好,因為sys.modules['__main__']指向一個idle.pyw文件,而不是其運行中的文件。

您沒有說出所看到的行為,但是我希望CodeUnderTest中的兩行顯示為被覆蓋,但是文件中的其他行都沒有。 Coverage.py無法測量在啟動之前發生的執行,在這里直到模塊執行之后才開始執行。 例如,在開始import coverage ,已經執行了import coverage線。 此外,一旦開始覆蓋,直到下一個函數調用才真正開始測量。

運行coverage.py的最簡單方法是從命令行使用它。 這樣,您就知道它盡早開始:

$ coverage run my_prog.py arg1 arg2 ...

如果必須以編程方式使用它,則對文件進行排列,以使您感興趣的所有執行都發生在覆蓋開始后調用的函數中。

暫無
暫無

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

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