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代码测试上面的接口
- 必须通过headers指定内容类型为application/json: ```headers={"Content-Type":"application/json"}
- 请求数据要转化为字符串:
data=json.dumps(data)
(使用json.dumps需要import json) - 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()
运行程序:
本文来自博客园,作者:Harry_666,转载请注明原文链接:https://www.cnblogs.com/harry66/p/13340630.html