python 接口自动化测试(四)
说完了SOAP协议的接口自动化
该说下http协议的接口测试了
HttpService.py
import requests
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" ) class HttpService():
def __init__(self,host,url):
self.host=host
self.url=url def httpReq(self,params,method="POST"):
requesturl=self.host+self.url
if(method == "POST"):
resp_data=requests.post(requesturl,params)
else:
resp_data=requests.get(requesturl)
resp=resp_data.text
return resp
这是http请求的实现类,运用了requests模块
之后就是在具体的执行文件中调用上面的HttpService.py
在RunMain.py中添加方法:
def runHttpTest(ip,list,serviceClass):
length=len(list)
#实现控制台输出执行进度
widgets = [ip+' Progress: ', Percentage(), ' ', Bar(marker=RotatingMarker('>')),
' ', ETA()]
pbar = ProgressBar(widgets=widgets, maxval=length).start()
for i in range(length):
pbar.update(i+1)
try:
#实例化类的对象
runhttptest = serviceClass(ip,str(list[i][0]))
if(str(list[i][2]) == "GET"): #判断http请求的方法
test_rep=runhttptest.httpReq(None,"GET")
DataEngine.httpGetResultCheck(test_rep,xlw,list,i) #返回结果判断
else:
dict=eval(str(list[i][2]))
test_rep=runhttptest.httpReq(dict)
DataEngine.httpResultCheck(test_rep,xlw,list,i) except Exception,e:
print(str(list[i][1])+"\t"+str(e))
Logging.writeException(e)
pbar.finish()
由于接口返回结果和SOAP接口的返回结果类型不一致,所以DataEngine.py中的结果处理方法就要做一些扩展,由于时间关系,我这边就直接另写了两个方法进行结果断言处理
def httpResultCheck(test_rep,xlw,list,xls_row):
global COUNT_ROWs
result=test_rep.find(',"status":1',22)
if(result != -1):
xlw.write_HttpResult(COUNT_ROWs,list,xls_row,True)
COUNT_ROWs=COUNT_ROWs+1
else:
Logging.writeHttpLog(str(list[xls_row][1]),str(test_rep))
xlw.write_HttpResult(COUNT_ROWs,list,xls_row,False)
COUNT_ROWs=COUNT_ROWs+1 def httpGetResultCheck(test_rep,xlw,list,xls_row):
global COUNT_ROWs
test_rep=json.loads(test_rep)
result=test_rep['status']
if(result == 1):
xlw.write_HttpResult(COUNT_ROWs,list,xls_row,True)
COUNT_ROWs=COUNT_ROWs+1
else:
Logging.writeHttpLog(str(list[xls_row][1]),str(test_rep))
xlw.write_HttpResult(COUNT_ROWs,list,xls_row,False)
COUNT_ROWs=COUNT_ROWs+1
以上就是所有的代码添加:
执行后结果输出见下图:
其中执行失败的用例,会以红色醒目标识出来,并在其后输出具体的中文用例描述
如有问题,欢迎交流
python 接口自动化测试(四)的更多相关文章
- python接口自动化测试(四)-Cookie&Sessinon
掌握了前面几节的的内容,就可以做一些简单的http协议接口的请求发送了,但是这些还不够.HTTP协议是一个无状态的应用层协议,也就是说前后两次请求是没有任何关系的,那如果我们测试的接口之前有相互依赖关 ...
- python接口自动化测试四:代码发送HTTPS请求
HTTPS: get: url = 'https://www.juhe.cn/docs/api/id/39' r = requests.get(url) # ...
- 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码
引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...
- python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为
python接口自动化测试二十七:密码MD5加密 ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...
- python接口自动化测试七:获取登录的Cookies
python接口自动化测试七:获取登录的Cookies,并关联到下一个请求 获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cooki ...
- Python接口自动化测试框架实战 从设计到开发
第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...
- python 接口自动化测试(三)
1.WriteIni.py import ConfigParser cf = ConfigParser.ConfigParser() cf.add_section("PC_WSDL" ...
- 记录python接口自动化测试--简单总结一下学习过程(第十目)
至此,从excel文件中循环读取接口到把测试结果写进excel,一个简易的接口自动化测试框架就完成了.大概花了1周的时间,利用下班和周末的时间来理顺思路.编写调试代码,当然现在也还有很多不足,例如没有 ...
- python接口自动化测试框架实现之字符串插入变量(字符串参数化)
问题: 在做接口自动化测试的时候,请求报文是json串,但是根据项目规则必须转换成字符串,然后在开头拼接“data=” 接口中很多入参值需要进行参数化. 解决方案: 1.Python并没有对在字符串中 ...
- python - 接口自动化测试 - RunTest - 测试用例加载执行/测试报告生成
# -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: run_test.py @ide: PyCharm Com ...
随机推荐
- Canvas createImageData
createImageData() 方法创建新的空白 ImageData 对象.新对象的默认像素值 transparent black. 对于 ImageData 对象中的每个像素,都存在着四方面的信 ...
- # C#不登录电脑启动程序
我们知道开机自启动程序如果在用户不登录的情况下是不启动的,但是服务类程序是可以跨过用户登录启动的,例如IIS服务,SQL服务.如果我们已经写好了桌面应用程序,又希望他开机自启动,那就需要借助系统服务在 ...
- .net判断System.Data.DataRow中是否包含某列
大家对将DataRow转成实体对象并不陌生,转成实体的时候一般都会加上这个判断 if (row["字段名"] != null && row["字段名&q ...
- 【puthon基础】之str类字符串
str类字符串是不可变对象 1.创建字符串 s1 = str() #创建一个空字符串 s2 = str("hello") #创建字符串"hello" 2.处理字 ...
- [html5] 学习笔记-Canvas 绘制渐变图形与绘制变形图形
在 HTML5 中,使用 Canvas API 绘制图形的知识,可以对绘制图形进行处理,包含使用 Canvas API 绘制渐变图形,使用 Canvas API 的坐标轴变换处理功能绘制变形图形.其中 ...
- js之Math对象
; var num1 = Math.floor(num); // 向下取整 var num2 = Math.ceil(num); // 向上取整 document.write(num2+'-<b ...
- Biztalk AS2开发经验总结
一. 准备证书 4 1. 升级win2008 R2证书服务 4 2. 申请证书 6 二. 配置证书 13 1. 为AS2配置证书 13 2. ...
- iOS之网络数据下载和JSON解析
iOS之网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍IOS中如何利用NSURLconnection从网络上下载数据以及如何解析下载下来的JSON数据格式,以及如何显示数据和托图片的异步 ...
- 谈谈JavaScript代码混淆
概述: 案例:Cesium打包流程,相关技术点和大概流程 原理:代码优化的意义:压缩 优化 混淆 优化:如何完善Cesium打包流程 关键字:Cesium gulp uglifyjs 字数:2330 ...
- Java Web(七) JSTL标签库
在之前我们学过在JSP页面上为了不使用脚本,所以我们有了JSP内置的行为.行为只能提供一小部分的功能,大多数的时候还是会用java脚本,接着就使用了EL表达式,基本上EL表达式看似能满足我们的要求,它 ...