【问题标题】:How to mock list inside mocked object with python unittest?如何使用 python unittest 在模拟对象中模拟列表?
【发布时间】:2019-02-27 14:57:56
【问题描述】:

我正在尝试从 Mock 对象返回一个列表,但无法使其正常工作。

代码如下:

def execute_call(model, payload):
    result = model.execute(payload)
    code = result[0]

这是我尝试过的测试:

def test_get_code(self, session):
    execute_call = Mock()
    execute_call.return_value = ['123', '123', '123']
    session.return_value = Mock(execute=execute_call)

结果:

code = result[0]
TypeError: 'Mock' object does not support indexing

我不知道如何使 result[0] 工作。 'execute_call' 应该是模拟的,但 return_value 需要是一个列表。

任何想法都值得赞赏。

【问题讨论】:

    标签: python python-unittest python-unittest.mock


    【解决方案1】:
    def execute_call(model, payload):
        result = model.execute(payload)
        code = result[0]
    
    def test_execute_call(self):
        mock_model = mock.MagicMock()
        mock_model.execute = mock.MagicMock(return_value=(a,b,c)
        self.execute_call(mock_model, payload)
        assert whatever
    

    您需要将模拟对象传递给函数,以便可以使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2021-04-12
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多