设置被调用时特定参数的模拟方法返回值

2024-10-01 17:33:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个通过模拟web服务来工作的测试。我把它放在调用特定方法时返回特定返回值的地方。我正在验证包装的函数是否返回我期望的值。问题是这个测试似乎几乎没有用。在

这是我所拥有的-

@patch('run.Client')
def test(self, mock_client):
    service = WebService()
    mock_client.return_value.service.GetMemberStatus.return_value = 'E'
    member_status = service.get_member_status(11)
    self.assertEqual('E', member_status)

如果使用特定参数调用GetMemberStatus方法,我只希望返回E。我试过-

^{pr2}$

然而,这似乎并没有改变什么。在

问题-如何设置模拟方法的返回值,只有当调用了适当的参数?在


Tags: 方法函数selfclientweb参数returnvalue
1条回答
网友
1楼 · 发布于 2024-10-01 17:33:43

一般来说,您不会这样做。相反,您会断言,作为测试的一部分,已使用预期参数调用了模拟方法:

gms_mock = mock_client.return_value.service.GetMemberStatus
gms_mock.return_value = 'E'

member_status = service.get_member_status(11)

self.assertEqual('E', member_status)
gms_mock.assert_called_with(11, '', '')

您所做的只是记录一个模拟调用,就好像被测代码调用了GetMemberStatus,然后在该调用返回的Mock实例的return_value属性上分配{}。在

您可以将^{} attribute设置为函数;它将被传递参数,您可以在那里测试:

^{pr2}$

但这确实让测试哪些参数传递到了错误的位置。在

相关问题 更多 >

    热门问题