模拟调用返回一个空列表

2024-05-13 21:35:37 发布

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

我正在为一个模型编写单元测试。调用返回一个空列表,我不确定如何调试出错的地方。 这是我的密码:

    @patch('app.models.client.post')
    def test_something(self, mock):
       
        method_mock.return_value = None
        payloads = [json.loads(call[2]['data']) for call in mock.mock_calls]
        
        # do something else

        self.assertEquals('stuff', payloads[0]['x']['y'])

我注意到mock.mock_calls返回[],因此,assert中的错误list index out of range 我错过了什么

提前谢谢


Tags: 模型selfclientapp密码列表models地方
1条回答
网友
1楼 · 发布于 2024-05-13 21:35:37

在您的代码中,在mock(您的补丁装饰程序)的实例化和第一次调用mock.mock_call之间,我没有看到任何最终调用app.models.client.post的逻辑

>>> from unittest.mock import Mock
>>> m = Mock()
>>> m.mock_calls  # mock_calls is empty, we've never called the mock ex: m('something')
[]
>>> m('a')  # we call it
<Mock name='mock()' id='4342272064'>
>>> m.mock_calls  # mock_calls is populated with the arguments of the call
[call('a')]

您必须在app.models中触发调用client.post的代码。也许通过使用RequestFactory

相关问题 更多 >