首页 > 其他 > 详细

抓取Swagger文档(三)

时间:2021-04-12 22:22:34      阅读:36      评论:0      收藏:0      [点我收藏+]
 

前言:这将会是一个文章篇幅比较多的专栏,大概会用超过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文档时使用的一些方法细节。希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家的支持。

抓取Swagger文档(三)

原文:https://www.cnblogs.com/zzhen93/p/14649767.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!