2012-07-27 24 views
0

我正在使用模擬器進行Python測試。我試圖單元測試一個元類,它覆蓋了__new__方法,然後在內部調用type.__new__(cls)僅在模塊內部使用Python模擬器

我不想實際撥打type.__new__,所以我想模擬出type。當然,我不能修補__builtin__.type,因爲它在測試中破壞了對象的構造。

所以,我真的想限制在測試模塊內嘲笑type。這可能嗎?

回答

1

是的。因爲這些原因,儘可能接近您要調用函數的位置。所以,在你的測試用例中,只能圍繞你正在測試的函數(或者其他可調用的函數),你可以修補type

patch的文檔有很多這樣做的例子,如果你想仔細閱讀它們。

乾杯。

+0

問題是type .__ new__阻止創建mock和任何其他不在模塊內的對象。這包括模擬。模擬本身。 – 2012-07-27 20:04:02

+1

對。您需要事先創建模擬,並將其傳遞給'patch'。更根本的是,這很困難的原因是因爲當你注意到時,嘲諷'type .__ new__'真的很廣泛。也許你想完全嘗試一種不同的策略。 – Julian 2012-07-27 20:07:07