[英]Mocking with addition assignment (Mocking bytes() module)
我有一个程序如下
data = bytes()
...
new_data = bytes()
...
data += new_data
print(data)
所以我相应地模拟了字节以及__iadd__
调用,如下所示:
@unittest.mock.patch('file_name.bytes')
def test(self, mock_bytes):
mock_bytes.__iadd__.return_value = mock_bytes
...
据我了解,应该返回bytes()
的 MagicMock,但我得到的是bytes().__iadd__()
的 MagicMock。
我将不胜感激有关此事的任何帮助:)
PS 还尝试了诸如mock_bytes()
、 mock_bytes().__iadd__()
或任何其他变体之类的变体。
简而言之,模拟按预期工作。 要覆盖data += new_data
你应该有这样的语法: mock_bytes.return_value.__iadd__.return_value = "the value which is printed"
。
关于模拟语法的说明:您通常可以将.return_value
替换为()
,因此mock_bytes.return_value.__iadd__.return_value = "the value which is printed"
等效于mock_bytes().__iadd__.return_value = "the value which is printed"
现在,至于为什么首先需要()
/ .return_value
:
data
变量的值: data = bytes()
您正在更改函数bytes
的返回值。 您确定调用了 iadd 是正确的,并且您想再次更改返回值。mock_bytes.return_value.__iadd__.return_value = "the value which is printed"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.