好久没写博客了。、最近忙着工作以及新工作的事。、

看了下以前写的简单接口自动化,拿出来总结下,也算记录下学习成果

先来贴一下最后的结果,结果是写在原来的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的更多相关文章

  1. Python+Pytest+Allure+Git+Jenkins接口自动化框架

    Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...

  2. excel+requests管理测试用例接口自动化框架

    背景: 某项目有多个接口,之前使用的unittest框架来管理测试用例,将每个接口的用例封装成一个py文件,接口有数据或者字段变动后,需要去每个py文件中找出变动的接口测试用例,维护起来不方便,为了便 ...

  3. Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport  多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...

  4. python requests简单接口自动化

    get方法 url:显而易见,就是接口的地址url啦 headers:定制请求头(headers),例如:content-type = application/x-www-form-urlencode ...

  5. Jmeter 5.1 从excel读取数据执行接口自动化

    思路:数据在excel文件中进行维护,然后转换成csv格式,jme中读取数据执行: 1.将接口各数据在excel文件中进行维护,然后存为csv格式,我的数据如下: 2.jmeter脚本,配置csv文件 ...

  6. python(pytest)+allure+jenkins 实现接口自动化的思路

    效果图镇楼: 上述各模块作用: python(pytest): 1:用于读测试用例(本次用例写在csv文件中) 2:环境配置相关 3:提取1中的测试数据,组成请求体 4:发送请求 5:获取结果 6:断 ...

  7. 简单的python http接口自动化脚本

    今天给大家分享一个简单的Python脚本,使用python进行http的接口测试,脚本很简单,逻辑是:读取excel写好的测试用例,然后根据excel中的用例内容进行调用,判断预期结果中的返回值是否和 ...

  8. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)

    可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...

  9. python接口自动化21-下载excel文件(Content-Type:octets/stream)

    前言 Content-Type类型为octets/stream,这种一般是文件类型了,比如有时候需要导出excel数据,下载excel这种场景如何用python来实现呢? 抓下载接口 1.下载的场景如 ...

随机推荐

  1. HTML5 Canvas 高仿逼真 3D 布料图案效果

    HTML5 规范引进了很多新特性,其中最令人期待的之一就是 Canvas 元素,HTML5 Canvas 提供了通过 JavaScript 绘制图形的方法,非常强大.下面给大家分享一个 HTML5 C ...

  2. 编码之JSP乱码涉及问题

    各种编码一栏表 A. JSP/Servlet都有的编码设置 1. request.setCharacterEncoding("UTF-8") 2. response.setChar ...

  3. 【web前端面试题整理04】阿里一行之大神面对面

    前言 这段时间我在河南一家公司当了一段时间的前端主管,最后可耻的匿了,原因各种各样,最主要的就是不想呆在郑州了. 其实这里的同事还是很不错的,面对老总最后的挽留我不是没有动心,而是这个地方确实不太好, ...

  4. [读码]HTML5像素文字爆炸重组

    [边读码,边学习,技术也好,思路也罢] [一款基于HTML5技术的文字像素爆炸重组动画特效,我们可以在输入框中指定任意文字,点击确定按钮后,就会将原先的文字爆炸散去,新的文字以像素点的形式组合起来,看 ...

  5. Flex布局窥探(一)

    一.Flex布局是神马? Flex是Flexible Box的缩写,意为‘弹性布局’,用来为盒模型提供最大的灵活性. 任何容器都能被指定为Flex布局: .box{ display: flex; } ...

  6. ABAP--在查询条件只包含部分索引字段时,如何使用索引

    One of the most important considerations when writing a select statement against a large table is th ...

  7. SharePoint 2013 日历视图兼容性问题

    在IE11上访问SharePoint 2013 calendar视图,发现加入兼容性视图以后访问,正常,如下图: 不加入兼容性视图IE11访问,出现兼容性问题,如下图: 因为有些环境有问题,有些环境没 ...

  8. ArcGIS Server 10.1发布数据源为ArcSDE(直连)的MXD【转】

    因为ArcSDE10.1基本默认直连,所以我们在发布直连的MXD仍然需要注意相关的事宜. 1:保证两台机器都能够访问共享存储的信息 2:确保已UNC路径保存ArcCatalog的文件夹连接,而且直连的 ...

  9. 见见面、聊聊天 - 5月22日晚7点Meetup,三里屯绿树旁酒吧,畅谈云技术和应用

    总是邮件.QQ什么的线上聊,让我们见面吧,不怕见光死,呵呵.   我和同事会先抛砖引玉,给大家介绍一下Autodesk几款最新的云技术和解决方案,然后大家就可畅所欲言,自由交流.来自五湖四海的人,为了 ...

  10. webView 显示一段 html 代码

    1.布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:and ...