簡體   English   中英

Python Mocking function 在嵌套函數中調用

[英]Python Mocking function called inside nested functions

抱歉,這個問題可能很容易解決,我是 python mocking 的新手,很難弄清楚這一點。

 @mock.patch('my_module.PypiImportedPackage.SomeClassAdvancedFunctions.get_attrib')
    def test_mocking(self, get_attrib_mock):
       get_attrib.return_value = '1'
       my_instance = SomeClass(param1)
       mytest_result = my_instance.advanced.get_attrib('doesntmattertheinputthisismocked')
       self.assertEqual(mytest_result, 1)
       # pass 
       calltoafunctionthatoimportesSomeClassfrom__my_module__andfailsif__get_attrib__doesnotreturn1(param2,param3)
      #fail

在 my_module 我有

import PypiImportedPackage 
from PypiImportedPackage import SomeClass

SomeClass.__init__ (我從 pypi 導入,所以我沒有太多機會改變),有一行self.advanced = SomeClassAdvancedFunctions所以我不能真正修補 SomeClass.advanced.get_attrib 因為它只存在於實例等級,

這就是為什么我必須修補 PypiImportedPackage.SomeClassAdvancedFunctions 並且實際上這會傳入我的代碼的AssetEqual操作。

知道我做錯了什么嗎?

謝謝

您的get_attrib.return_value = '1'應該是get_attrib_mock.return_value = '1'因為 get_attrib_mock 現在可以在修補后作為 get_attrib 工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM