python+requests+json 接口测试思路示例
实际项目中用python脚本实现接口测试的步骤:
1 发送请求,获取响应 》》2 提取响应里的数据,对数据进行必要的处理 》》3 断言响应数据是否与预期一致
以豆瓣接口为例,做一个简单的接口测试吧。使用到的知识涉及requests库,json库。
1 发送请求,获取响应
#coding:utf-8
'''
dinghanhua
2018-11-10
接口返回数据为json类型,提取数据实例
''' import requests
import json q = 'python'
count = 3
url = 'https://api.douban.com/v2/book/search?q={0}&count={1}'.format(q,count)
response = requests.get(url) #请求并获取响应
2 json解析响应数据
jsonstr = json.loads(response.text) #json解析响应文本
#或者jsonstr = response.json() '''解析后的数据格式'''
print('响应解析后的类型:',type(jsonstr)) #dict
print('响应解析后的键值对个数:',len(jsonstr)) #字典键值对个数
for key in jsonstr: #打印出所有的keys
print(key ,end=' ')
3 提取数据及数据处理
'''取json串里的值'''
books = jsonstr['books'] #取books对应的值
# print(type(books)) #list 数组
print('books共有%d本书'%len(books)) #数组元素个数 for book in books: #编辑books取每本书的信息
# print(type(book)) # book的类型
# for key in book: # book的keys
# print(key)
'''取出所需的字段'''
index = books.index(book) #索引
NO = str(index+1) #第几本书
average= book['rating']['average'] author = book['author'] #author是数组,可能有多个作者
authors = ','.join(author) pubdate = book['pubdate']
title = book['title']
author_intro = book['author_intro']
summary = book['summary']
price = book['price'] '''格式化输出'''
print('NO.{NO}\n书名:{title}\n出版日期:{pubdate}\n平均分:{average}\n定价:{price}\n'
'作者:{author}\n{author_intro}\n内容简介:{summary}'.format(title = title,
NO = NO,
pubdate = pubdate,
author = authors,
author_intro = author_intro,
average = average,
price = price,
summary = summary))
4 断言
'''断言'''
expectedtitle = ['Python编程:从入门到实践','利用Python进行数据分析','Python基础教程'] #预期结果(接口数据会变,根据实际情况添加预期结果) if title == expectedtitle[index]:
print('test pass')
else:
print('test fail. The expected title is %s,but the actual title is: %s.'%(expectedtitle[index],title))
好了,简单的接口测试脚本完成。完整代码:
#coding:utf-8
'''
dinghanhua
2018-11-10
接口返回数据为json类型,提取数据实例
''' import requests
import json q = 'python'
count = 3
url = 'https://api.douban.com/v2/book/search?q={0}&count={1}'.format(q,count)
response = requests.get(url) #请求并获取响应 jsonstr = json.loads(response.text) #json解析响应文本
#jsonstr = response.json() '''解析后的数据格式'''
print('响应解析后的类型:',type(jsonstr)) #dict
print('响应解析后的键值对个数:',len(jsonstr)) #字典键值对个数
for key in jsonstr: #打印出所有的keys
print(key ,end=' ') '''取json串里的值'''
books = jsonstr['books'] #取books对应的值
# print(type(books)) #list 数组
print('books共有%d本书'%len(books)) #数组元素个数 for book in books: #编辑books取每本书的信息
# print(type(book)) # book的类型
# for key in book: # book的keys
# print(key)
'''取出所需的字段'''
index = books.index(book) #索引
NO = str(index+1) #第几本书
average= book['rating']['average'] author = book['author'] #author是数组,可能有多个作者
authors = ','.join(author) pubdate = book['pubdate']
title = book['title']
author_intro = book['author_intro']
summary = book['summary']
price = book['price'] '''格式化输出'''
print('NO.{NO}\n书名:{title}\n出版日期:{pubdate}\n平均分:{average}\n定价:{price}\n'
'作者:{author}\n{author_intro}\n内容简介:{summary}'.format(title = title,
NO = NO,
pubdate = pubdate,
author = authors,
author_intro = author_intro,
average = average,
price = price,
summary = summary)) '''断言'''
expectedtitle = ['Python编程:从入门到实践','利用Python进行数据分析','Python基础教程'] #预期结果 if title == expectedtitle[index]:
print('test pass')
else:
print('test fail. The expected title is %s,but the actual title is: %s.'%(expectedtitle[index],title))
the end!
python+requests+json 接口测试思路示例的更多相关文章
- python中json的操作示例
先上一段示例 # -*- coding: cp936 -*- import json #构造一个示例数据,并打印成易读样式 j = {} j["userName"]="a ...
- Python操作JSON数据代码示例
#!/usr/bin/env python import json import os def json_test(): return_dic = {} json_data = { 'appid':' ...
- python+requests实现接口测试 - get与post请求使用(转载)
转自:http://www.cnblogs.com/nizhihong/p/6567928.html 简介:Requests 是用Python语言编写,基于 urllib,采用 Apache2 Lic ...
- python+requests实现接口测试 - cookies的使用
在很多时候,发送请求后,服务端会对发送请求方进行身份识别,如果请求中缺少识别信息或存在错误的识别信息, 会造成识别失败. 如一些需要用户登录以后才能访问的页面. import requests mya ...
- python+requests实现接口测试 - get与post请求使用
简介:Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 ...
- python+requests+excel 接口测试
1.EXCEL文件接口保存方式,如图. 2.然后就是读取EXCEL文件中的数据方法,如下: import xlrd class readExcel(object): def __init__(self ...
- Python+requests+excel接口测试
2018-06-14 17:00:13 环境准备: - Python 3.7 - requests库 - xlrd 1.创建Excel文件 2.读取Excel文件 import xlrd clas ...
- python+requests之接口测试
最近学习接口测试,测试工具玩的差不多了,想用代码来尝试一下. 发现一个简单的库,requests 一:安装 pip install requests 二:使用 import requests url ...
- python+requests实现接口测试 - cookies的使用 (转载)
出自:https://www.cnblogs.com/nizhihong/p/6699492.html 在很多时候,发送请求后,服务端会对发送请求方进行身份识别,如果请求中缺少识别信息或存在错误的识别 ...
随机推荐
- maven tomcat eclipse 配置 debug
1.单击Eclipse菜单"Run"中的"Run Configurations". 2.在弹出的对话框中的左侧树中找"到Maven Build&quo ...
- gulp打包css/image/Less/Sass
其他的和打包前一篇随笔(打包js) http://www.cnblogs.com/teersky/p/7251329.html 相同,本篇文章主要写gulpFile.js的配置: 安装CSS打包插件: ...
- python-几种快速了解函数及模块功能的方式
背景 在进行编程的时候经常要导入各种包的各种函数,但是很多包一下又不知道为什么要导入这个模块,所以想总结下有哪些方法可以让我们快速熟悉其中函数的作用. import numpy as np impor ...
- MVC参数自动装配
在拿到一个类型的所有属性以及字段的描述信息后,就可以通过循环的方式,根据这些数据成员的名字去QueryString,Form,Session,Cookie读取所需的数据了. 就是遍历参数,然后用反射遍 ...
- 参考美团、饿了么 && localStorage
localStorage使用. 为什么要使用 localStorage? 因为在之前的讨论过程中,问题:每次添加一件商品和去掉一个商品都需要发送一个http请求来更新购物车, ...
- 深度学习(五)基于tensorflow实现简单卷积神经网络Lenet5
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8954892.html 参考博客:https://blog.csdn.net/u01287127 ...
- Bootstrap 斜体、文本对齐、缩略图、地址、列表等
目录1.标题2.页面主体3.强调 a.小号文本 b.着重 c.斜体 d.对齐class e.强调class4.缩略语5.地址6.列表 a.无序列表 b.有序列 ...
- Spring接收List型参数
第一种形式: 提交的数据形式:id=1,2,3 --> urlEncoding --> id=1%2C2%2C3 <form method="post" act ...
- matlab矩阵中如何去掉重复的行;如何找到相同的行,并找到其位置
找到了2个函数:unique和ismember 1. 去掉其中的重复行:unique 例子: IDX = [,,; ,,; ,,; ,,; ,,; ,,]; classNo = unique(IDX, ...
- 【IP】Linux中检测IP地址冲突
在Windows系统中,如果本地网络IP地址出现冲突,会出现图标提示. 在Linux系统中,并没有提供相关的功能,如果本地网络采用静态IP地址配置,出现比较奇怪的网络连接问题,如ssh连接复位,可以考 ...