2016-09-20 62 views

回答

0

spec用作您的模擬對象的模板。用documentation表示:

如果使用spec或spec_set參數,則只會創建spec中存在的魔術方法。

這意味着您不能在模擬對象上調用不存在於您正在嘲笑的對象上的方法。該documentation解釋這是這樣的:

注意:如果您使用規範關鍵字參數來創建一個模擬然後嘗試設置一個神奇的方法,是不是在規範將引發AttributeError。

autospec基本上是在對象的補丁傳遞到MagicMockspec正在建立一個patch的簡寫。文檔:

如果您設置autospec = True,則使用來自被替換的對象的規範創建模擬。