python接口测试3-JSON格式

什么是JSON?

一种轻量级的数据交换格式。它独立于语言和平台,JSON解析器和JSON库支持不同的编程语言。JSON具有自我描述性,很容易理解。

数据格式:

{ "name":"python", "age":5 }

接口最常见的数据格式就是JSON,现在我们来实践一下如何开发JSON格式的API接口

from flask import Flask, request, jsonify app = Flask(__name__) @app.route("/api/sub/", methods=["POST"]) def sub(): if not request.json: # 如果请求数据类型非json return jsonify({"code": "100001", "msg": "请求类型错误", "data": None}) if not "a" in request.json or not "b" in request.json: # 如果参数中没有a或者没有b return jsonify({"code": "100002", "msg": "参数缺失", "data": None}) a = request.json.get("a") b = request.json.get("b") result = str(float(a) - float(b)) # 使用float支持浮点数相减 return jsonify({"code": "100000", "msg": "成功", "data": result}) # 使用jsonify将字典数据转换为json类型的相应数据 if __name__ == '__main__': app.run(port=5005)

运行此接口

 

 使用测试工具测试接口

 

这里需要注意的是此API需要传递的参数必须为JSON格式,否则会报类型错误,原因是JSON格式必须通过headers指定请求内容类型为json,Content-Type: application/json

添加headers后访问成功。

 

 

通过python代码测试上面的接口

  1. 必须通过headers指定内容类型为application/json: ```headers={"Content-Type":"application/json"}
  2. 请求数据要转化为字符串: data=json.dumps(data) (使用json.dumps需要import json)
  3. json格式的响应数据,在接口调试通过和稳定的情况下可以使用response.json()解析为字典格式,进行断言
import requests import json base_url = "http://127.0.0.1:5005" def test_sub_normal(): url = base_url + "/api/sub/" headers = {"Content-Type": "application/json"} # 1. 必须通过headers指定请求内容类型为json data = {"a": "4", "b": "2"} data = json.dumps(data) # 2. 序列化成字符串 response = requests.post(url=url, headers=headers, data=data) # 3. 响应解析 # 响应格式为: {"code":"100000", "msg": "成功", "data": "2.0"} resp_code = response.json().get("code") resp_msg = response.json().get("msg") resp_data = response.json().get("data") print(resp_code, resp_msg, resp_data) # 断言 assert response.status_code == 200 assert resp_code == "100000" assert resp_msg == "成功" assert resp_data == '2.0' if __name__ == "__main__": test_sub_normal()

运行程序:

 


__EOF__

本文作者Harry
本文链接https://www.cnblogs.com/harry66/p/13340630.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Harry_666  阅读(778)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示