請原諒我的noob地位,但我遇到了一個我不太瞭解的構造,希望有人能爲我解釋。嘲諷繼承方法
class Base(object):
def mogrify(self, column):
return self.mogrifiers.get(column.lower().strip()) or (lambda x: x)
...
class MyClass(some.package.Base):
def mogrifiers(self):
return {
'column1': (lambda x: datetime.datetime.fromtimestamp(int(x)))
}
...
class MyOtherClass(object):
def convert_columns:
...
new_row[colkey] = self.myclass.mogrify(colkey)(value)
這一切工作,但我試圖寫一個單元測試,並模擬出MyClass
。
據我所知,mogrifiers返回所有列和任何所需的轉換字典。
我正在測試的代碼調用mogrify(從Base類繼承)與字符串中的特定列名稱。
這試圖從字典中提取列並返回lambda函數?或者如果它不存在於字典中,它會返回一個只給出字符串的lambda表達式?
所以,我只是在我試圖測試的代碼中留下了(值)位。目前尚不清楚它的功能。
如果我不想測試底層的轉換/轉換,我的模擬可能會返回簡單的lambda。
所以我這樣做,但將在電話會議上的例外mogrify說:
E TypeError: 'str' object is not callable
任何人都可以提供一些線索什麼,我在這裏失蹤?