You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中创建带json()方法的可等待对象以测试aiohttp路由

无需修改原路由代码测试aiohttp接口函数

你当前的核心问题是原路由代码依赖request.json()这个可等待方法,直接传字典会报错。不用改原代码,只要模拟一个具备json()异步方法的请求对象,就能正常测试func1和func2的逻辑。

解决代码示例

写一个极简的模拟类,只实现原代码用到的json()方法即可:

import asyncio
from myserver import route1

# 模拟aiohttp Request对象的核心接口
class MockRequest:
    def __init__(self, json_data):
        self.json_data = json_data
    
    # 实现异步的json()方法,匹配原代码调用逻辑
    async def json(self):
        return self.json_data

# 准备测试用的请求数据
test_data = {"some": "data"}
# 创建模拟请求实例
mock_request = MockRequest(test_data)

# 执行测试
if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    response = loop.run_until_complete(route1(mock_request))
    # 可选:验证返回结果
    print(f"返回状态码: {response.status}")
    print(f"返回内容: {response.body}")

关键说明

  • 不用复刻aiohttp Request的所有属性和方法,只需要实现原代码用到的json()异步方法
  • json()方法定义为async def,让原代码里的await request.json()能正常执行,返回你预设的测试数据
  • 原路由代码完全不需要修改,直接就能完成func1、func2的逻辑测试

内容的提问来源于stack exchange,提问作者tima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:08:16