Python模拟具有不同结果的多次调用

编程入门 行业动态 更新时间:2024-10-25 18:26:52
本文介绍了Python模拟具有不同结果的多次调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我希望能够对特定属性函数进行多次调用,每次后续调用都返回不同的结果.

I want to be able to have multiple calls to a particular attribute function return a different result for each successive call.

在下面的示例中,我希望增量在其第一次调用时返回5,然后在其第二次调用时返回10.

In the below example, I would like increment to return 5 on its first call and then 10 on its second call.

例如:

import mock class A: def __init__(self): self.size = 0 def increment(self, amount): self.size += amount return amount @mock.patch("A.increment") def test_method(self, mock_increment): def diff_inc(*args): def next_inc(*args): #I don't know what belongs in __some_obj__ some_obj.side_effect = next_inc return 10 return 5 mock_increment.side_effect = diff_inc

下面的页面几乎包含了我需要的所有内容,但它假定调用者将是一个名为"mock"的对象,但这不能假定.

The below page has almost everything that I need except that it assumes that the caller would be an object named "mock", but this can't be assumed.

mock.readthedocs. org/en/latest/examples.html#multiple-calls-with-different-effects

推荐答案

您可以传递一个可迭代的副作用,并在每次调用的值列表中进行迭代.

You can just pass an iterable to side effect and have it iterate through the list of values for each call you make.

@mock.patch("A.increment") def test_method(self, mock_increment): mock_increment.side_effect = [5,10] self.assertEqual(mock_increment(), 5) self.assertEqual(mock_increment(), 10)

更多推荐

Python模拟具有不同结果的多次调用

本文发布于:2023-10-31 05:49:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1545196.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!