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

Python Azure函数单元测试:如何构造带JSON负载的模拟请求?

正确构造带JSON参数的Azure Functions HttpRequest

问题根源很明确:你传递的body是字符串类型,但func.HttpRequest的body参数要求是字节对象。当req.get_json()尝试对body执行decode()操作时,字符串没有这个方法,自然就抛出了AttributeError。

解决方法

只需要把JSON字符串转成字节对象,同时建议添加规范的请求头,让函数能正确识别内容类型:

import json
import azure.functions as func

# 把字典转成JSON字符串后,再编码为字节对象
json_body = json.dumps({'name': 'Test'}).encode('utf-8')

# 构造请求,推荐用POST方法传递JSON(符合REST规范)
req = func.HttpRequest(
    method='POST',
    body=json_body,
    url='/api/HttpTrigger',
    headers={'Content-Type': 'application/json'}
)

# 测试解析JSON
req_body = req.get_json()
print(req_body['name'])  # 输出: Test

额外说明

  1. HTTP方法选择:虽然技术上GET请求也能携带body,但不符合HTTP规范(GET的参数通常放在URL查询串),更推荐用POST/PUT方法传递JSON数据。
  2. 强制解析的特殊情况:如果实在没法添加Content-Type头,可以用req.get_json(force=True)强制解析body,但这不是最佳实践,不建议常用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:42:55