unittest mock.patch仅一次

2024-04-25 17:19:50 发布

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

我正在测试一个函数,每次执行两次“requests.post”。Si I存根此函数的调用。但是,我希望第一个存根返回一个假数据,第二个存根返回另一个假数据。怎么做? 目前,我有:

@mock.patch('requests.post', side_effect=mocked_object)
def test_function_ok(self, mock_post):
    ...

我想要这样的东西:

@mock.patch_once('requests.post', side_effect=mocked_1)
@mock.patch_once('requests.post', side_effect=mocked_2)
def test_function_ok(self, mock_post):
    ...

Tags: 数据函数testselfdeffunctionokpost
2条回答

多亏了不来梅先生。但是,我必须调用列表中的元素,如下所示:

@mock.patch('requests.post', side_effect=[mocked_1(), mocked_2()])
def test_function_ok(self, mock_post):
    ...

您可以向请求发送两次要模拟的不同数据,它将模拟该方法并返回在return_value中指定的预期数据

@patch('the_function_path_you_want_to_mock')
def test_data(self, mock_obj):
    mock_obj.return_value.function_to_be_mocked.return_value = [data_to_mocked]
    response = self.client.post('/request', data=json.dumps(self.input_data), content_type='application/vnd.api+json', )

    mock_obj.return_value.function_to_be_mocked.return_value = [data_to_mocked]
    response = self.client.post('/request', data=json.dumps(self.input_data), content_type='application/vnd.api+json', )

相关问题 更多 >