码迷,mamicode.com
首页 > 编程语言 > 详细

Python+excel实现的简单接口自动化 V0.1

时间:2016-04-15 18:01:08      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

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

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

先来贴一下最后的结果,结果是写在原来的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,针对每个接口的不同功能,做针对性的判断

Python+excel实现的简单接口自动化 V0.1

标签:

原文地址:http://www.cnblogs.com/delete31/p/5396009.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!