python - 如何使用 python unittest 在模拟对象中模拟列表?
问题描述
我正在尝试从 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 需要是一个列表。
任何想法都值得赞赏。
解决方案
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
您需要将模拟对象传递给函数,以便可以使用它。
推荐阅读
- ios - Flutter web Auth无法访问查询参数
- regex - 如何验证模式 AB12CD
- python - 如何在熊猫中添加或存储 23 小时以上的时间
- python - 如何打印嵌套字典的名称(不是嵌套字典中的名称)
- javascript - JavaScript - 如何用几行代码编写?
- ios - 在 Swift 中使用枚举组织 XCUITest
- angular - Angular - 如何使用帖子从其他页面接收数据
- javascript - ESLint:如何使用“no-restricted-imports”限制某些路径但允许子路径?
- android - DiffUtil.ItemCallback areItemsTheSame() 方法检查项目两次
- c# - .NET 5 Blazor Server App ObjectResult“Accept”标头未得到尊重