unittest mock.patch 只有一次
unittest mock.patch only once
我正在测试一个执行两次“requests.post”的函数。 Si 我存根调用这个函数。但是,我希望第一个存根 return 是一个假数据,第二个存根是另一个假数据。怎么做 ?
目前,我有:
@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):
...
感谢 MrBean Bremen。但是,我必须调用列表中的元素,如下所示:
@mock.patch('requests.post', side_effect=[mocked_1(), mocked_2()])
def test_function_ok(self, mock_post):
...
您可以将要模拟的不同数据发送到请求两次,它将模拟方法和 return 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', )
我正在测试一个执行两次“requests.post”的函数。 Si 我存根调用这个函数。但是,我希望第一个存根 return 是一个假数据,第二个存根是另一个假数据。怎么做 ? 目前,我有:
@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):
...
感谢 MrBean Bremen。但是,我必须调用列表中的元素,如下所示:
@mock.patch('requests.post', side_effect=[mocked_1(), mocked_2()])
def test_function_ok(self, mock_post):
...
您可以将要模拟的不同数据发送到请求两次,它将模拟方法和 return 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', )