前言:这将会是一个文章篇幅比较多的专栏,大概会用超过20篇的系列文章,写一个个人目前工作中在使用的接口自动化测试框架。
上期说到从Swagger接口文档中抓取到各个测试套件、测试用例和接口详情的数据报文,并将这些报文分目录保存到了一个个json文件中。现在我们已经有了这些信息,接下来的工作就是组装用例,将测试用例写入Excel中。
这里涉及到一个openpyxl模块的使用。首先初始化一个excel表格,可以在WriteExcel类初始化时创建一个excel。
def __init__(self, filename):
‘‘‘初始化文件对象‘‘‘
self.filename = filename
# 创建xlsx文件,如果存在则删除后再新建
if os.path.exists(self.filename):
os.remove(config.xlsCase_path)
self.wb = Workbook()
self.ws = self.wb.active # 激活sheet
self.ws.cell(1, 1).value = "业务类一"
self.ws.cell(1, 2).value = "业务类二"
self.ws.cell(1, 3).value = "模块名称"
self.ws.cell(1, 4).value = "用例编号"
self.ws.cell(1, 5).value = "用例标题"
self.ws.cell(1, 6).value = "接口地址"
self.ws.cell(1, 7).value = "是否执行"
self.ws.cell(1, 8).value = "是否保存响应结果"
self.ws.cell(1, 10).value = "请求方式"
self.ws.cell(1, 11).value = "入参关键字"
self.ws.cell(1, 12).value = "上传文件"
self.ws.cell(1, 13).value = "请求数据"
self.ws.cell(1, 14).value = "后置sql"
self.ws.cell(1, 15).value = "预期结果"
self.ws.cell(1, 16).value = "执行结果"
self.ws.cell(1, 17).value = "编写人"
self.ws.cell(1, 18).value = "编写日期"
self.ws.cell(1, 19).value = "执行人"
self.ws.cell(1, 20).value = "执行日期"
self.ws.cell(1, 21).value = "备注"
self.wb.save(filename)
然后从接口信息的json报文中找出所有接口信息。
def get_file_list(self, filepath):
‘‘‘
获取文件夹下所有文件名
filepath:文件路径
return:返回文件夹下及子目录的所有文件
‘‘‘
filepath_list = []
for root_dir, sub_dir, files in os.walk(filepath):
for i in range(0, len(files)):
filepath_list.append(root_dir + "\\" + files[i])
return filepath_list
将取到的接口信息写入Excel文件。
for file in filelist:
caseId += 1
count += 1
inter_name = file.split("\\")[-2]
with open(file, ‘r‘, encoding=‘utf-8‘) as rdfile:
text = json.load(rdfile)
model_name = inter_name
title = text[‘name‘]
method = text[‘request‘][‘method‘].upper()
w.write(count, 3, model_name)
w.write(count, 4, "case_" + str(caseId).zfill(6))
w.write(count, 5, title)
w.write(count, 10, method)
if ‘json‘ in text[‘request‘].keys(): # post请求的接口相关数据写入excel
w.write(count, 11, "json")
url = text[‘request‘][‘url‘]
params = text[‘request‘][‘json‘]
w.write(count, 6, uri + url)
w.write(count, 13, json.dumps(params))
elif ‘params‘ in text[‘request‘].keys(): # get请求的接口参数写入
w.write(count, 11, "params")
url = text[‘request‘][‘url‘]
jsonp = str(text[‘request‘][‘params‘])
join_text = jsonp.replace("{", ""). replace("}", ""). replace(":", "="). replace("‘", ""). replace(",", "&"). replace(" ", "")
w.write(count, 6, uri + url)
w.write(count, 13, join_text)
else: # 将url中包含$符号的get请求的参数单独提取出来写入params
w.write(count, 11, "data")
url = text[‘request‘][‘url‘]. replace(‘{‘, ‘$‘). replace(‘}‘, ‘‘)
start_index = url.find("$")
url1 = url[:start_index]
params = url[start_index:]
w.write(count, 6, uri + url1)
if "$" in params:
w.write(count, 13, params)
这里的思路是每次打开一个json数据报文件,读取里面数据后将它写入Excel。频繁的打开json文件和读写Excel操作,可能导致性能比较差,有兴趣的同学可以优化一下。
很开心,我们的测试用例模板文件就这样生成了!
好了,今天的分享就到这里。下篇文章我会接着本期开始讲述使用Python来抓取Swagger文档时使用的一些方法细节。希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家的支持。
原文:https://www.cnblogs.com/zzhen93/p/14649767.html