有沒有什麼辦法在測試覆蓋期間排除私有方法?排除掩蓋的私有方法
在我.coveragerc我想:
[report]
exclude_lines =
__*
但似乎排除方法,如long_method_name
療法是任何方式做到這一點沒有列出所有methdos?
編輯
我想的方法,如__add__
具有呈三角語法私人是在測試中包含。
有沒有什麼辦法在測試覆蓋期間排除私有方法?排除掩蓋的私有方法
在我.coveragerc我想:
[report]
exclude_lines =
__*
但似乎排除方法,如long_method_name
療法是任何方式做到這一點沒有列出所有methdos?
編輯
我想的方法,如__add__
具有呈三角語法私人是在測試中包含。
從docs:
class MyObject(object):
def __init__(self):
blah1()
blah2()
def __repr__(self): # pragma: no cover
return "<MyObject>"
排除一個配置選項無厘頭IMO所有的私有方法 - 這會導致錯誤的假設,如果一個看上去就覆蓋效果。
您的正則表達式爲__*
,它匹配一個或多個下劃線,因此它將排除任何具有任何下劃線的行。這不是你想要的。
這應該排除那些與雙下劃線開頭的函數中的任何函數定義:
[report]
exclude_lines =
def __
這似乎是一個壞主意給我。你需要知道這些功能是否經過了適當的測試。它們是從你的公共API調用的:如果你不測量它們調用的函數的覆蓋範圍,你怎麼能聲稱你的公共API函數已經過全面測試?
要排除的私有方法,而不是特殊的方法,你可以嘗試一個更復雜的正則表達式:
[report]
exclude_lines =
def __[^(]*[^_][(]
但這是越來越那種瘋狂......
我們需要測試只公開API而不是私有方法,我們得到了像albot 100或更多,因此無處不在''#pragma'不是一種選擇。有沒有這樣做的黑客? – MaLiN2223
您可以將您的API調用重新設計爲從另一個文件中的某些內容繼承,將私有方法放入這些對象中,並忽略您現在導入的文件。 – ti7