繁体   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