单元测试中如何配置MagicMock使模拟Flask Request的get_json返回自定义JSON
问题
单元测试场景下需要用MagicMock模拟Flask框架的Request对象,初始代码如下:
m = mock.MagicMock() m.mock_add_spec(spec=Request, spec_set=True) # 待补充配置:让后续m.get_json()调用可返回预设测试JSON数据
核心诉求:正确配置该MagicMock实例,使其调用get_json()方法时返回预先设置的测试用JSON数据。
解决方案
自定义继承自MagicMock的模拟类,重写get_json方法直接返回预设JSON测试数据即可,实现代码:
from typing import Any from unittest import mock class iMock(mock.MagicMock): def __init__(self, *args: Any, **kw: Any): super().__init__(*args, **kw) def get_json(self): return {"node_id": 0}
实例化该自定义类后,按原有逻辑添加Request规格约束即可正常使用,get_json()调用会返回预设测试数据,不会触发spec_set规则报错。
内容的提问来源于stack exchange,提问作者Eric Böwer
相关产品推荐
相关产品推荐

