簡體   English   中英

我如何測試python私有方法(是的,我確實有理由對其進行測試)

[英]How can I test a python private method (yes I do have reason to test them)

我正在尋找最干凈的方法來編寫python私有方法的單元測試。

我知道通常您不想測試私有方法,但是我們繼承了python文件的巨大龐然大物,需要將其重構為更可維護的模塊。 我們不了解它的邏輯,但知道它可以工作,因此希望使用TDD來確保我們的重構不會破壞代碼,目前90%的代碼位於私有方法中,並且該模塊對可靠的測試完全是通過黑盒測試進行的。 我完全希望我會寫一些測試,一旦重構完成,這些測試將被刪除,但是現在我希望能夠插入一些私有方法來測試它們,以增加我對重構沒有破壞關鍵邏輯的信心當我過渡到更易於維護(和可測試)的布局時。

在python中,“私有”方法僅向開發人員簽名,它們應該是私有的,實際上您可以訪問每個方法。 當您使用兩個下划線開頭的方法名稱時,Python會使用一些“魔術”名稱,以使其難以訪問。 實際上,它不像其他語言那樣強制執行任何操作。

假設我們有以下課程:

class Foo:
 def __bar(self, arg):
     print(arg)
 def baz(self, arg):
     self.__bar(arg)

要訪問“專用” __bar方法,請嘗試以下操作:

f = Foo()
f._Foo__bar('a')

可以在文檔中找到有關標識符的更多信息

希望這是您想要的。

暫無
暫無

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

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