gpt4 book ai didi

python - Python的模拟库,在模拟函数中只返回一次值?

转载 作者:行者123 更新时间:2023-12-01 05:44:46 25 4
gpt4 key购买 nike

使用 mock 模拟方法很简单,例如,像这样:

    o.get_idlist = mock.Mock(return_value=[1])

但是,这将使 get_idlist() 每次都返回 [1]。有没有办法让它只返回 [1] 一次,后续调用返回 [] (例如)而不使用 side_effect=somefun ?我想我想要的是一种副作用,但就是这样。

(我只是觉得为此创建一个大的命名函数太笨拙了......或者有没有办法在这里使用 lambda?)

最佳答案

假设您没有任何反对 side_effect 本身的东西,但只是不想创建整个函数,您可以粗略地执行如下操作

>>> from unittest.mock import Mock
>>> m = Mock()
>>> m.side_effect = [1] + [[]]*100
>>> m()
1
>>> m()
[]
>>> m()
[]
>>> m()
[]
>>> m()
[]

我承认它有点脏,但如果你只是想进行快速测试,它应该足够了。当然,您可以将 [] 替换为 [0] 或任何您喜欢的内容。

关于python - Python的模拟库,在模拟函数中只返回一次值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16440738/

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