博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python+requests+Excel+Jenkins接口自动化
阅读量:6249 次
发布时间:2019-06-22

本文共 2127 字,大约阅读时间需要 7 分钟。

总结大部分人做接口自动化的流程后,发现基本上都是:python + requests做接口请求;Excel用来存储用例;HTMLTestRunner生成测试报告;Jenkins完成定时任务。

其实在完成这个流程的过程中,代码编写只占用了一小部分的时间,大部分的时间都浪费在搭建环境和用例编写上。这里我记录一些遇到的问题。

一、接口请求

(1)配置请求方法:get 和 post 方法简单封装,header中参数设置

# _*_coding:utf-8 _*import requests#get请求def get(url,querystring):    headers = requestHeader()    response = requests.request("GET", url, headers=headers, params=querystring)    # print response.url    return response#post请求def post(url,payload,querystring):    headers = requestHeader()    response = requests.request("POST", url, data=payload, headers=headers, params=querystring)    # print response.url    return response#设置请求的headerdef requestHeader():    headers = {    'Content-Type': "application/json",    'Cache-Control': "no-cache"    }    return headers

(2)针对post请求的body,开始时使用的时text的dict去请求,请求错误总是返回:"请求参数错误",后来使用postman进行调试,直接复制已经转换成json格式的body传参进行请求,终于成功。

WechatIMG12.jpeg

可以通过这个方式去转换一些有问题的body。

(3)body转换为json的另一种方式:通过ast模块进行转换(推荐)

import astcaseParams         =     ast.literal_eval(caseParams)

(4)通过openpyxl模块获取用例Excel

Screen Shot 2018-05-21 at 3.09.32 PM.png

#用例名caseName     =     caseFile.getCellVaule(ws,rowIndex,1)#urlcaseUrl     =     caseFile.getCellVaule(ws,rowIndex,3)#请求方式caseMethod     =     caseFile.getCellVaule(ws,rowIndex,4)#参数caseParams     =     caseFile.getCellVaule(ws,rowIndex,5)

备注:在获取用例信息的过程中,需要对一些参数进行容错

A:是否有参数,若无参数,需传空;
B:get参数和post body需要分开处理:
get的参数是以 '&param'形式明文拼接在url中;

#将请求参数转换为json格式caseParams     =     ast.literal_eval(caseParams)keys         =     dict(caseParams).keys()values         =     dict(caseParams).values()for x in xrange(0,len(keys)):  tempQuery[keys[x]] = values[x]

post的body需要放在dict中进行传参;

caseParams         =     ast.literal_eval(caseParams)

(5)分割所需的参数,将结果写入到文件内

#请求返回的内容,转换为json格式text             =     json.loads(response.text)                caseFile.setCellValue(ws,rowIndex,6,response.text)#URL请求耗时spendTime         =     response.elapsed.total_seconds()                caseFile.setCellValue(ws,rowIndex,7,spendTime)#请求结果状态statue             =     response.status_code                caseFile.setCellValue(ws,rowIndex,8,statue)self.assertEqual(statue, 200)

(6)将请求结果写入html文件,并展示

WechatIMG13.jpeg

(7)配置到Jenkins,定时执行查看接口的可达性

Screen Shot 2018-05-21 at 3.22.19 PM.png

Screen Shot 2018-05-21 at 3.22.54 PM.png

转载地址:http://dzfsa.baihongyu.com/

你可能感兴趣的文章
百度地图需要的效果-有感
查看>>
1097 Deduplication on a Linked List
查看>>
查看 NPM、Yarn 全局安装的包
查看>>
软件版本号命名规则
查看>>
vue导航栏跳转路由
查看>>
OC - 缓存 - NSCache - 介绍
查看>>
Jenkins+GitHub+fir_cli 一行命令从源码到fir im
查看>>
【转】TCP三次握手和四次挥手全过程及为什么要三次握手解答
查看>>
[系统资源攻略]IO第一篇-磁盘IO,内核IO概念
查看>>
在 CentOS 7 上设置 grub2
查看>>
[BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
查看>>
[BZOJ 2140]稳定婚姻(强连通分量)
查看>>
人工智能工程师学习路线
查看>>
I don't like to be an theorist
查看>>
「docker实战篇」python的docker- 抖音视频抓取(上)(24)
查看>>
powerdesigner 画出 C++ UML 增加const,static,virtual属性
查看>>
12月10日站立会议
查看>>
Nginx入门(2)反向代理和负载均衡
查看>>
MySQL库表状态查询
查看>>
【鲁班学院】干货分享!《面试必备之Mysql索引底层原理分析》
查看>>