python函数返回值可以有多个吗_具有多个返回值的模拟python函数

只是想分享一下如何让它与side_effect一起工作。我整理了一个简化版本来展示如何为您的用例使用side_effect。

side_effect的行为与返回值不同,在返回值中,当您为带有条目的列表提供一个side_effect时,您实际上声明的是,每次调用模拟方法时,它都将返回列表中的每个项作为其返回值。这就是您获得ValueError的原因:要解包的值太多(应为3),因为执行此操作:[1, 2, 3]

你是说,每次调用我的模拟方法时,返回1,然后下次调用该方法时,返回2,然后返回3。

考虑到这一点,如果您设置side_effect,如下所示:[('stuff1', 'stuff2', 'stuff3')]

你现在要说的是,当你调用side_effect时,列表中的第一项是将返回的内容。实际上是:('stuff1', 'stuff2', 'stuff3')

或者,您可以执行以下操作:my_test_foo.side_effect = lambda x, y: (1, 2, 3)

它通过获取两个参数并返回它应该返回的三个值来模拟您正在测试的方法。

因此,考虑到这一点,您的测试可以构造为:import unittest

from unittest.mock import Mock

from mock import patch

from stuff import FunctionIWantToTest

class MyTest(unittest.TestCase):

@patch('stuff.myExampleFunction', return_value=Mock())

def test_mytest(self, m_example_function):

m_example_function.side_effect = [("stuff1", 100, 200)]

# m_example_function.side_effect = lambda x, y: ("stuff1", 100, 200)

a, b, c = FunctionIWantToTest()

if __name__ == '__main__':

unittest.main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值