0
我正在使用模擬器進行Python測試。我試圖單元測試一個元類,它覆蓋了__new__
方法,然後在內部調用type.__new__(cls)
。僅在模塊內部使用Python模擬器
我不想實際撥打type.__new__
,所以我想模擬出type
。當然,我不能修補__builtin__.type
,因爲它在測試中破壞了對象的構造。
所以,我真的想限制在測試模塊內嘲笑type
。這可能嗎?
我正在使用模擬器進行Python測試。我試圖單元測試一個元類,它覆蓋了__new__
方法,然後在內部調用type.__new__(cls)
。僅在模塊內部使用Python模擬器
我不想實際撥打type.__new__
,所以我想模擬出type
。當然,我不能修補__builtin__.type
,因爲它在測試中破壞了對象的構造。
所以,我真的想限制在測試模塊內嘲笑type
。這可能嗎?
是的。因爲這些原因,儘可能接近您要調用函數的位置。所以,在你的測試用例中,只能圍繞你正在測試的函數(或者其他可調用的函數),你可以修補type
。
patch
的文檔有很多這樣做的例子,如果你想仔細閱讀它們。
乾杯。
問題是type .__ new__阻止創建mock和任何其他不在模塊內的對象。這包括模擬。模擬本身。 – 2012-07-27 20:04:02
對。您需要事先創建模擬,並將其傳遞給'patch'。更根本的是,這很困難的原因是因爲當你注意到時,嘲諷'type .__ new__'真的很廣泛。也許你想完全嘗試一種不同的策略。 – Julian 2012-07-27 20:07:07