Python+excel实现的简单接口自动化 V0.1
好久没写博客了。、最近忙着工作以及新工作的事。、
看了下以前写的简单接口自动化,拿出来总结下,也算记录下学习成果
先来贴一下最后的结果,结果是写在原来的excel中

执行完毕后,会将结果写入到“状态”列;
执行通过的话,如果返回的json有message写入“response”列,如果执行失败,则会将返回的json也写入其中
前期准备:
在excel中依次填上接口、请求类型、需要传的数据、期望返回的状态码以及该接口的说明
代码如下,写的很简陋,甚至都没定义方法什么的,姑且称之为V0.1 后面学有所得再深入修改
#coding:utf-8
import requests
import json
import xlrd
import os
from xlutils.copy import copy excel = 'apidemo.xls' #定义存放用例的excel路径,当前路径下
data = xlrd.open_workbook(excel)
host = 'http://xxxxxxx/api'#测试服,这个自己写吧
headers = {'Accept-Version':'v2','content-type': 'application/json'} #定义headers result = [] #用来存放验证结果
responseValue = [] #存放返回的数据
table = data.sheet_by_index(0)
nrow = table.nrows #获取行数
for i in range(1,nrow): #循环获取每行中的数据
requestMethod = table.cell(i,2).value #方法,post、get、delete
url = host + table.cell(i,1).value #拼接url
payload = table.cell(i,3).value #定义要传的值
ex = table.cell(i,4).value #获取期望的返回值,目前是用status_code来判断
if requestMethod == 'get': #不同的方法发不同的请求
r = requests.get(url,headers = headers)
elif requestMethod == 'post':
r = requests.post(url,data = payload,headers = headers)
elif requestMethod == 'delete':
r = requests.delete(url,data = payload,headers = headers)
if r.status_code == ex: #如果和期望值一样,case通过
result.append('true')
if 'message' in r.json().keys(): #这个看情况而定吧,这边例如账号密码错误也是在message里的
responseValue.append(r.json()['message']) #将message先存入response
else:
responseValue.append('')
else:
result.append('false') #如果结果不对的话,如果有message就写,没有就全部写入
if 'message' in r.json().keys():
responseValue.append(r.json()['message'])
else:
responseValue.append(json.dumps(r.json(),ensure_ascii=False))
r.close()
print('共有%d个url,当第%d个执行完毕'%(nrow-1,i))
book = copy(data)
sheet1 = book.get_sheet(0) #copy原来的excel
for j in range(1,nrow):#将结果写入到对应的表格中 #将结果和response都写入到复制的工作表中
sheet1.write(j,5,result[j-1])
sheet1.write(j,6,responseValue[j-1])
os.remove(excel)
book.save(excel) #移除原来的excel,保存新的excel
代码中获取返回的message,要看实际情况,我这边是开发将错误都通过message返回,比如请求的数据不存在,请求注册的手机号已经注册过等等
代码中存在很多不足,比如没有捕获异常,如果有异常出现就完蛋了。、
另外只对返回的状态码进行了判断,感觉还有很多可以做的事,比如对返回的json的结构进行判断,对数据库进行查询,比如delete的请求,接口返回成功,但是不一定数据库真的已经删除了
还有之前用appium时用到的unittest和HTMLTestRunner,感觉都可以和这个一起使用;
如果那样的话,感觉可以定制case,针对每个接口的不同功能,做针对性的判断
增加下遇到的小问题:
1.对返回的json进行判断,json返回是中文时的问题
json.dumps(r.json(),ensure_ascii=False)
2.最后的excel报告的样式没有了
data = xlrd.open_workbook(excel,formatting_info=True)
Python+excel实现的简单接口自动化 V0.1的更多相关文章
- Python+Pytest+Allure+Git+Jenkins接口自动化框架
Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...
- excel+requests管理测试用例接口自动化框架
背景: 某项目有多个接口,之前使用的unittest框架来管理测试用例,将每个接口的用例封装成一个py文件,接口有数据或者字段变动后,需要去每个py文件中找出变动的接口测试用例,维护起来不方便,为了便 ...
- Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架
整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...
- python requests简单接口自动化
get方法 url:显而易见,就是接口的地址url啦 headers:定制请求头(headers),例如:content-type = application/x-www-form-urlencode ...
- Jmeter 5.1 从excel读取数据执行接口自动化
思路:数据在excel文件中进行维护,然后转换成csv格式,jme中读取数据执行: 1.将接口各数据在excel文件中进行维护,然后存为csv格式,我的数据如下: 2.jmeter脚本,配置csv文件 ...
- python(pytest)+allure+jenkins 实现接口自动化的思路
效果图镇楼: 上述各模块作用: python(pytest): 1:用于读测试用例(本次用例写在csv文件中) 2:环境配置相关 3:提取1中的测试数据,组成请求体 4:发送请求 5:获取结果 6:断 ...
- 简单的python http接口自动化脚本
今天给大家分享一个简单的Python脚本,使用python进行http的接口测试,脚本很简单,逻辑是:读取excel写好的测试用例,然后根据excel中的用例内容进行调用,判断预期结果中的返回值是否和 ...
- python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)
可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...
- python接口自动化21-下载excel文件(Content-Type:octets/stream)
前言 Content-Type类型为octets/stream,这种一般是文件类型了,比如有时候需要导出excel数据,下载excel这种场景如何用python来实现呢? 抓下载接口 1.下载的场景如 ...
随机推荐
- SharePoint2013的头像显示和读取
前言 有个时候SP的二次开发,需要用代码获取头像显示,如SP基于AD验证,AD有头像属性,做为头像数据来源(因为Exchange和lync的头像也来自AD),说道这里大家都知道有2种办法,一种从A ...
- 使用mac 终端利用alias设置快捷命令
在终端中输入快捷命令可以提高工作效率,同时可以少记很多命令 如何做: 首先在~/目录下编辑 .bash_profile这个隐藏文件,如果你想直接双击此文件打开编辑的话请在终端输入 Mac 显示隐藏文件 ...
- iOS Apple Pay
iOS 苹果支付 需要证书支持支付功能 targets 打开支付功能按钮 //ApplePay#import <PassKit/PassKit.h> ...
- iOS 单例传值遇见问题
单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 1.单例模式的要点: 显然单例模式的要点有三个:一是某个类只能有一个实例: ...
- iOS关于启动页自定义特殊处理
平常开发中对于启动页可能会有一些特别的要求,比如在启动页加动画或加一些按键可以响应事件等,最近项目中要在启动页增加版本号,因为版本号是不断的改变,所以要动态实现把它加到启动页上:在XCode上面配置的 ...
- 【代码笔记】iOS-钢琴小游戏
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> //加入头文件 #import <AudioTool ...
- Android按键事件处理流程 -- KeyEvent
刚接触Android开发的时候,对touch.key事件的处理总是一知半解,一会是Activity里的方法,一会是各种View 中的,自己始终不清楚到底哪个在先哪个在后,总之对整个处理流程没能很好的把 ...
- maven编译java代码报“非法字符: \65279 ”错误的解决方法
前段时间开发一个项目,使用maven进行编译时报“非法字符: \65279 ”,但是眼睛看怎么都正确的,文件转成utf-8编码还是报错. 最后没办法,暴力解决了这个问,步骤如下 1.把文件内容复制出来 ...
- Photo Shop切图
切图之前 哪些是需要切出来的? 修饰性的 (一般用在background属性) 图标.logo 有特殊效果的按钮 文字等 非纯色的背景 内容性的 (一般用在img标签) Banner.广告图片 文章 ...
- 软件开发与UML的关系
今天,我们上<统一建模语言UML>.课上老师给我们讲解了软件开发与UML之间的关系:UML常用于建立软件系统的模型,适用于系统开发的不同阶段.UML的应用贯穿于系统开发的不同阶段.1.需求 ...