“猴子補丁”就是指,在函數或對象已經定義之後,再去改變它們的行為。 舉個例子: import datetime datetime.datetime.now = lambda: datetime.datetime(2012, 12, 12) 大部分情況下,這是種很不好的做法 - 因為函數在代碼庫中的行 ...
“猴子補丁”就是指,在函數或對象已經定義之後,再去改變它們的行為。
舉個例子:
import datetime
datetime.datetime.now = lambda: datetime.datetime(2012, 12, 12)
大部分情況下,這是種很不好的做法 - 因為函數在代碼庫中的行為最好是都保持一致。打“猴子補丁”的原因可能是為了測試。mock
包對實現這個目的很有幫助。
為什麼提這個問題?
答對這個問題說明你對單元測試的方法有一定瞭解。你如果提到要避免“猴子補丁”,可以說明你不是那種喜歡花里胡哨代碼的程式員(公司里就有這種人,跟他們共事真是糟糕透了),而是更註重可維護性。還記得KISS原則碼?答對這個問題還說明你明白一些Python底層運作的方式,函數實際是如何存儲、調用等等。
另外:如果你沒讀過mock
模塊的話,真的值得花時間讀一讀。這個模塊非常有用。
本文首發於Python黑洞網,博客園同步更新