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()
运行程序:
python接口测试3-JSON格式的更多相关文章
- python 把数据 json格式输出
有个要求需要在python的标准输出时候显示json格式数据,如果缩进显示查看数据效果会很好,这里使用json的包会有很多操作 import json date = {u'versions': [{u ...
- python知识:json格式文本;异常处理;字符串处理;unicode类型和str类型转换
python进程中的实例和json格式的字符串之间的映射关系是非常直接的,相当于同一个概念被编码成不同的表示: stream in json form ----json.loads(str)----- ...
- python将json格式的数据转换成文本格式的数据或sql文件
python如何将json格式的数据快速的转化成指定格式的数据呢?或者转换成sql文件? 下面的例子是将json格式的数据准换成以#_#分割的文本数据,也可用于生成sql文件. [root@bogon ...
- 中文格式python 打印json格式的数据中文显示问题
废话就不多说了,开始... 平日会有这么一个应用场景,会用python去处置json格式的web API,以“ip.taobao.com”的API为例,详情见http://ip.taobao.com/ ...
- Python将JSON格式数据转换为SQL语句以便导入MySQL数据库
前文中我们把网络爬虫爬取的数据保存为JSON格式,但为了能够更方便地处理数据.我们希望把这些数据导入到MySQL数据库中.phpMyadmin能够把MySQL数据库中的数据导出为JSON格式文件,但却 ...
- Python第八天——Json
json 模块 json 模块提供了非常完善的 Python 对象到 JSON 格式的转换 import json d = dict(name='Bob',age=20,score=88) json. ...
- Python常用模块--json
官方解释: JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.人类很容易读写.机器很容易解析和生成.它基于 JavaScript编程语言的一部分, 标准ECM ...
- csv,json格式数据的读写
#!python3 # -*- coding:utf-8 -*- #CSV stands for "comma-separated values",and CSV files ar ...
- python字典转化成json格式。JSONEncoder和JSONDecoder两个类来实现Json字符串和dict类型数据的互相转换
遇到问题:进行Webservice接口测试时,对接口入参数据进行了处理,变成了dict格式,去进行接口请求报错. 需要转成成json格式,双引号去扩. 如下: 更改代码: # 在Python标准库的j ...
- python 在unix下json格式显示结果
在使用命令号输出接口测试结果,发现无法按照期望的json格式进行显示.查阅资料发现python自带强大的工具. 直接上代码: import os,requests url = XXXXXX conte ...
随机推荐
- json针对list map set 应用
package JSONtest; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; im ...
- D. Rescue Nibel! 解析(思維、組合、離散化、差分)
Codeforce 1420 D. Rescue Nibel! 解析(思維.組合.離散化.差分) 今天我們來看看CF1420D 題目連結 題目 給你\(n\)個區間,求有幾種方法使得\(k\)個區間的 ...
- 【django-simpleui】‘simpletags‘ is not a registered tag library报错的解决方法
1:创建 templatetags文件夹 2:创建simpletags.py文件将内容粘贴进去,在下面 3:setting.py添加文件指定: 1 TEMPLATES = [ 2 { 3 'BACK ...
- 老司机谈谈如何学习STM32嵌入式系统
一.嵌入式系统的概念 着重理解"嵌入"的概念 ,主要从三个方面上来理解. 首先,从硬件上,"嵌入"是基于CPU的处围器件的,整合到CPU芯片内部,就好比早期基于 ...
- 849. Maximize Distance to Closest Person ——weekly contest 87
849. Maximize Distance to Closest Person 题目链接:https://leetcode.com/problems/maximize-distance-to-clo ...
- 【Kata Daily 190910】Who likes it?(谁点了赞?)
题目: Description: You probably know the "like" system from Facebook and other pages. People ...
- php ci下添加一个创建常用的模块和控制器方法
我这么写是非常不好的 ,这些都可以写在lirbraries里面 (ci就是这么干的) 我这里是自己用 大概一个模型 没那么多讲究 现在core/CodeIgniter.php 文件 if($modle ...
- 最全总结 | 聊聊 Python 办公自动化之 Excel(下)
1. 前言 前面谈到 Python 处理 Excel 文件最常见的两种方式,即:xlrd/xlwt.openpyxl 其中, xlrd/xlwt 这一组合,xlrd 可以负责读取数据,而 xlwt ...
- 3.3 Spring5源码---循环依赖过程中spring读取不完整bean的最终解决方案
根据之前解析的循环依赖的源码, 分析了一级缓存,二级缓存,三级缓存的作用以及如何解决循环依赖的. 然而在多线程的情况下, Spring在创建bean的过程中, 可能会读取到不完整的bean. 下面, ...
- .Net 5 正式版RTM 发布
下载连接 https://dotnetcli.azureedge.net/dotnet/Sdk/5.0.100-rtm.20515.8/dotnet-sdk-5.0.100-rtm.20515.8-w ...