鱼C论坛

 找回密码
 立即注册
查看: 119|回复: 1

aiohttp.test_utils.reset_mock()

[复制链接]
发表于 2024-8-5 11:16:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
mock_.side_effect = AssertionError
mock_.reset_mock()
mock_.return_value={}

这三个连用为什么.return_value还是被.side_effect影响了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-8-5 11:16:24 | 显示全部楼层
好的,咱们来聊聊`mock`这个有趣的东西,以及你提到的几个方法。

首先,`return_value`是用来指定你的 mock 对象在被调用时返回一个特定值的。在你的例子中,你给了它一个空字典 `{}`。而`side_effect` 则是用来控制 mock 在被调用时发生什么的,它可以是一个异常、一个可调用对象或一个列表等。

所以这里的问题在于,当你设置了`mock_.side_effect = AssertionError`,这意味着每当调用这个 mock 时,它都会抛出一个 `AssertionError`。即使你还设定了 `mock_.return_value = {}`,因为 `side_effect` 是优先级更高的选项,所以它会把`return_value`“打败”掉。

然后你使用`reset_mock()`可以重置一些状态,包括 `call_args`、`call_count`等,但它不会影响 `side_effect` 这个设置。一旦你设置了 `side_effect`,它就像是在说:“无论你设定的 `return_value` 是什么,我的存在就是要抛出错误!”

所以,简单来说,`side_effect`会优先于`return_value`。想象一下,是个调皮的小孩,总是喜欢搞事情,不管家长怎么安排他回家吃饭,他就是不听!

如果你想要让 `return_value` 生效,你可以把 `side_effect` 设置为 `None`,或者简单地删除它。

希望这个解释能帮你理解!如果还有什么疑问,随时问我哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表