首页 技术 正文
技术 2022年11月19日
0 收藏 784 点赞 3,290 浏览 1713 个字

代码结构:

python 接口自动化测试–框架整改(五)

目标架构:

1.用例分析器,自动根据接口的参数,类型生成测试用例

2.数据分析器,自动维护接口参数数据,动态数据自动生成,返回结果自动查询判断

3.核心调用引擎,分SOAP和HTTP两种,调用用例,返回接口调用的结果

4.报告输出,统计用例通过率,错误日志,数据库持久化,持续集成

目前实现功能:

核心调用引擎,数据分析器(demo)

1.用例结构(更新)

excel分两个sheet,sheet1中存放用例,结构如下

python 接口自动化测试–框架整改(五)

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

python 接口自动化测试–框架整改(五)

第一行是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模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,082
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,556
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,406
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,179
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,815
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898