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.下载的场景如 ...
随机推荐
- heX——基于 HTML5 和 Node.JS 开发桌面应用
heX 是网易有道团队的一个开源项目,允许你采用前端技术(HTML,CSS,JavaScript)开发桌面应用软件的跨平台解决方案.heX 是你开发桌面应用的一种新的选择,意在解决传统桌面应用开发中繁 ...
- 【干货分享】Node.js 中文学习资料和教程导航
这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...
- 自动适应iframe右边的高度
在开发项目过程中,用iframe嵌套,会发现一个问题,用iframe嵌套的html结构右边不会自动适应高度. 这时候找到了一个解决方法: <iframe name="my_iframe ...
- Mac下的Parallel Windows忘记密码怎么办?
Mac机上安装了Parallel Windows,日久年深不登录结果忘记了登录密码,百爪挠心,想破脑壳试了n个密码都不行,放了一个多月也没想起来. 今天没事网上溜溜,肯定也有和我同病相怜的弟兄,果然, ...
- 最全面的NSDateHelper 分享
NSDateUtil 分享 (ios开发交流群:486468672) 代码下载:https://github.com/foxswang/NSDateUtil 史上最全面NSDate Utility 没 ...
- App开发流程之右滑返回手势功能续
上一篇记录了利用系统私有变量和方法实现右滑返回手势功能:http://www.cnblogs.com/ALongWay/p/5893515.html 这篇继续记录另一种方案:利用UINavigatio ...
- 开启Apache mod_rewrite模块完全解答
启用mod_rewrite模块 在conf目录的httpd.conf文件中找到 LoadModule rewrite_module modules/mod_rewrite.so 将这一行前面的#去掉. ...
- 安全攻防之SQL注入(通过sqlmap搞定所有问题)
第一步: sqlmap基于Python,所以首先下载: http://yunpan.cn/QiCBLZtGGTa7U 访问密码 c26e 第二步: 安装Python,将sqlmap解压到Python ...
- js 事件处理程序 事件对象
事件:用户或浏览器自身执行的动作: 事件处理程序:响应某个事件的函数: 事件流:从页面中接收事件的顺序. 1.DOM事件流 "DOM2级事件"规定的事件流包括三个阶段:事件捕获阶段 ...
- Eclipse界面设置与常用技巧
建议使用的透视图--视窗组合 Window→Save perspective as 保存当前透视图设置,便于将来不小心打乱后恢复 恢复的方法:Window→reset perspective 定制 ...