python+requests+Excel+Jenkins接口自动化
总结大部分人做接口自动化的流程后,发现基本上都是: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 #设置请求的header def requestHeader(): headers = { 'Content-Type': "application/json", 'Cache-Control': "no-cache" } return headers
(2)针对post请求的body,开始时使用的时text的dict去请求,请求错误总是返回:"请求参数错误",后来使用postman进行调试,直接复制已经转换成json格式的body传参进行请求,终于成功。
可以通过这个方式去转换一些有问题的body。
(3)body转换为json的另一种方式:通过ast模块进行转换(推荐)
import ast caseParams = ast.literal_eval(caseParams)
(4)通过openpyxl模块获取用例Excel
#用例名 caseName = caseFile.getCellVaule(ws,rowIndex,1) #url caseUrl = caseFile.getCellVaule(ws,rowIndex,3) #请求方式 caseMethod = caseFile.getCellVaule(ws,rowIndex,4) #参数 caseParams = caseFile.getCellVaule(ws,rowIndex,5)
备注:在获取用例信息的过程中,需要对一些参数进行容错
A:是否有参数,若无参数,需传空;
B:get参数和post body需要分开处理:
get的参数是以 '¶m'形式明文拼接在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文件,并展示
(7)配置到Jenkins,定时执行查看接口的可达性
相关推荐
86193952 2020-10-27
Mynamezhuang 2020-09-18
充满诗意的联盟 2020-08-23
raksmart0 2020-08-17
yfightfors 2020-08-16
84487600 2020-08-16
qdqht00 2020-07-26
WebVincent 2020-07-21
hzyuhz 2020-07-04
fengchao000 2020-07-04
javaraylu 2020-06-28
baijinswpu 2020-06-28
ZHANGRENXIANG00 2020-06-28
Teamomc 2020-06-28
Catastrophe 2020-06-26
hell0kitty 2020-06-17
我欲疾风前行 2020-06-18