python 接口自动化测试--框架整改(五)
代码结构:

目标架构:
1.用例分析器,自动根据接口的参数,类型生成测试用例
2.数据分析器,自动维护接口参数数据,动态数据自动生成,返回结果自动查询判断
3.核心调用引擎,分SOAP和HTTP两种,调用用例,返回接口调用的结果
4.报告输出,统计用例通过率,错误日志,数据库持久化,持续集成
目前实现功能:
核心调用引擎,数据分析器(demo)
1.用例结构(更新)
excel分两个sheet,sheet1中存放用例,结构如下

sheet2中存放测试环境host,接口wsdl地址,接口方法间的映射关系,结构如下:

第一行是host和wsdl路径的映射关系,
2,3,4列就是wsdl和接口方法的映射关系
建立这个映射关系呢有几点好处:
1.sheet1中的用例设计简洁了不少;2.测试环境变更或者wsdl变化的话,改动很方便
映射关系保存为两个字典,实现方法如下:
def getSoaConf(uri,sheetIndex=1):
"""
:rtype : list
"""
confList = data2List(uri,sheetIndex)
max_len = len(confList[0]) #列数,即有多少wsdl
row_len = len(confList) #行数,即最多的方法数
Ip_Wsdl_dict = {}
Wsdl_Method_dict = {}
Ip_Wsdl_dict[confList[0][0]] = [] #confList[0][0]是ip地址
for i in range(1,max_len):
Ip_Wsdl_dict[confList[0][0]].append(confList[0][i]) #ip_wsdl字典的key是ip,value就是对应的wsdl路径列表了
Wsdl_Method_dict[confList[0][i]] = [] #wsdl_method字典的key是wsdl,value定义为列表
for j in range(1,row_len):
method=confList[j][i]
if method != '':
Wsdl_Method_dict[confList[0][i]].append(confList[j][i])
return [Ip_Wsdl_dict,Wsdl_Method_dict]
传参即文件地址,默认读取sheet2中的配置信息
2.SOAP调用通用方法更新
运用反射机制实现接口和接口方法的传参调用,实现方法如下:
#! /usr/bin/python
# coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
from suds.client import Client
from suds.xsd import sxbasic
def SoaRequest(wsdl,fnname,data): #soap接口调用方法
sxbasic.resultList=[] #初始化location列表
soaService = Client(wsdl).service
soaRep = getattr(soaService,fnname)(data)
return soaRep
【PS: sxbasic.resultList=[] #初始化location列表 这句的意思请参考我的另一篇博文《记 suds 模块循环依赖的坑-RuntimeError: maximum recursion depth exceeded》】
实现通用的好处就是不用每个接口方法都单独在代码中定义对应的类和方法以实现调用
3.数据分析器的实现(demo)
接口自动化有个麻烦的地方就是数据库中的数据每天都有变化,不能保证每次调用的结果都和最初设计的时候一致,而保持数据新鲜有效的方案就是:指定一个规则自动生成(从数据库中查询或随机生成)
数据的对接就在参数传入调用方法前进行替换就OK了
如接口传入参数中有手机号,而手机号的规则我们都知道,在excel中定义对应的value格式为"[Phone]"
代码中遍历字符串类型的value查到以[,]包括的值,再字符串匹配对应的判断分支,执行对应的处理方法,再把返回值赋值给对应的Key就可以实现数据的动态更新和替换
python 接口自动化测试--框架整改(五)的更多相关文章
- Python接口自动化测试框架实战 从设计到开发
第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...
- 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码
引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...
- 基于Python接口自动化测试框架(初级篇)附源码
引言 很多人都知道,目前市场上很多自动化测试工具,比如:Jmeter,Postman,TestLink等,还有一些自动化测试平台,那为啥还要开发接口自动化测试框架呢?相同之处就不说了,先说一下工具的局 ...
- Python接口自动化测试框架: pytest+allure+jsonpath+requests+excel实现的接口自动化测试框架(学习成果)
废话 最近在自己学习接口自动化测试,这里也算是完成一个小的成果,欢迎大家交流指出不合适的地方,源码在文末 问题 整体代码结构优化未实现,导致最终测试时间变长,其他工具单接口测试只需要39ms,该框架中 ...
- python接口自动化测试框架实现之字符串插入变量(字符串参数化)
问题: 在做接口自动化测试的时候,请求报文是json串,但是根据项目规则必须转换成字符串,然后在开头拼接“data=” 接口中很多入参值需要进行参数化. 解决方案: 1.Python并没有对在字符串中 ...
- 【python大牛分享】python——接口自动化测试框架环境的使用
本文总结分享介绍接口测试框架开发,环境使用python3+selenium3+unittest+ddt+requests测试框架及ddt数据驱动,采用Excel管理测试用例等集成测试数据功能,以及使用 ...
- python接口自动化测试框架(post提交添加变量)
1.python接口测试框架包含哪几部分 数据源-> GET/POST 发送请求->接收返回结果->断言测试结果->生成测试报告(html报告)->网页报告 2.pyth ...
- python 接口自动化测试--框架定型(六)
脚本执行步骤: 1.还原测试数据库: 2.读取接口用例CSV文件到数据库: 3.执行数据库中标记执行的用例: 4.对比预期结果,将测试结果写入数据库结果表中. 数据管理: 事先备份测试数据库,并搭建自 ...
- python接口自动化测试二十五:执行所有用例,并生成HTML测试报告
import requestsimport unittest class TestQQ(unittest.TestCase): '''测试QQ号接口''' # 此注释将展示到测 ...
随机推荐
- TCP协议滑动窗口(一)——控制数据传输速率
窗口大小:TCP头中一个16位的域,表示当前可用接受缓冲区大小.在每个TCP对等段连接初始化时,告诉对方自己的窗口大小(不一定是满额,假如满额65201字节,可能暂时通告5840字节).若客户端接受数 ...
- GitLab Wiki 内容恢复版本管理
原来一直在网站上写Wiki文档, 最近手欠误删一篇文档, 想要恢复文档时才发现原来gitlab的Wiki是用git管理的从此再也不用为误删担心了 实现步骤: mac系统安装gollow brew in ...
- 下一个项目为什么要用 SLF4J
阿里巴巴 Java 开发手册 前几天阿里巴巴在云栖社区首次公开阿里官方Java代码规范标准,就是一个PDF手册,有命名规范,让你知道自己原来取的每一个类名.变量名都是烂名字,真替你家未来孩子担心:有集 ...
- Eval与Bind的区别
bind和eval都是ASP.NET中的函数,而且都有对将数据获取到Html中的功能.那么,它们在使用的时候有什么区别呢?在我们编程的时候,在某种情况下,用哪个函数更加合适呢? 区别 用法: 1. b ...
- CAN信号值解析
本文提供一种可以解析CAN信号各信号值的一种方法并进行说明. 一般情况下,高端一点的设备会计算每一个信号的值,但是接受到CAN信号的报文实际上有各种情况,如何通过设定的起始位和数据长度来获取某一信号的 ...
- Maven入门,Maven项目的创建,nexus 2.x搭建私服以及Maven多模块项目创建
maven的了解做一个总结,以便日后查阅, 若有不足之处,还望指出,学无止境 当然也能起到入门效果. 一,搭建maven私服 1.工具 a. Nexus 2.5.1-01 b. Maven 3.3.9 ...
- BZOJ 2142: 礼物
模非素数下的排列组合,简直凶残 调着调着就过了= = 都不知道怎么过的= = 直接上链接http://hi.baidu.com/aekdycoin/blog/item/147620832b567eb4 ...
- 纪中集训 Day 7
今天超级不爽啊啊啊啊 尼玛我三道题都想出来了就是没对一道,第一题没理负数尼玛题目没告诉我,第二题尼玛题目也没说最近的点是第(l+r)/2而不是距离为(a[l]+a[r])/2啊啊啊啊,第三题没打GCD ...
- 阿里巴巴Java开发手册评述
2016年底的时候阿里巴巴公开了其在内部使用的Java编程规范.随后进行了几次版本修订,目前的版本为v1.0.2版.下载地址可以在其官方社区-云栖社区https://yq.aliyun.com/art ...
- R系列:分词、去停用词、画词云(词云形状可自定义)
附注:不要问我为什么写这么快,是16年写的. R的优点:免费.界面友好(个人认为没有matlab友好,matlab在我心中就是统计软件中极简主义的代表).小(压缩包就几十M,MATLAB.R2009b ...