gpt4 book ai didi

python - 如何模拟类实例属性?

转载 作者:太空狗 更新时间:2023-10-30 01:56:44 26 4
gpt4 key购买 nike

class MyClass:
def __init__(self, a, b):
self.a = a
self.b = b

def myFunc():
myClass = MyClass(1, 2)
print(myClass.a, myClass.b)

在我的测试中,我想运行 myFunc()但里面myFunc()我要myClass返回 'test1''test2'作为其 ab属性。

所以我这样做了:

with patch('__main__.MyClass') as MockClass:
instance = MockClass.return_value
instance.a.return_value = 'test1'
instance.b.return_value = 'test2'
myFunc()

然而,结果是<MagicMock name=MyClass().a' id='2938383'> ..... 而不是简单地 'test1''test2' .

我做错了什么?我对如何使用 mock 有什么误解?

最佳答案

return_value 用于可调用对象,只写:

with patch('__main__.MyClass') as MockClass:
instance = MockClass.return_value
instance.a = 'test1'
instance.b = 'test2'
myFunc()

# test1 test2

而且你必须修补 with语句中的类,注意'__main__.MyClass'中Class的大写字母。

关于python - 如何模拟类实例属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48552458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com