测试工具(7)yaml接口用例生成-rap2

269 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情

大家好~我是小方,欢迎大家关注笋货测试笔记体完记得俾个like

回顾

上期我们讲到将接口用例生成Excel,有小伙伴反馈说'我的接口自动化框架数据驱动用的是yaml格式的接口用例,能不能转换成yaml格式'答案肯定是可以的啦~

yaml是什么

YAML是一个类似 XML、JSON 的标记性语言。YAML 强调以数据为中心,并不是以标识语言为重点。因而 YAML 本身的定义比较简单,号称“一种人性化的数据格式语言”。JSON的语法其实就是YAML的子集,大部分的JSON文件都可以被YAML的解释器解析。 我们将解析回来的数据(json)直接转换成yaml文件即可,不就可以得到跑接口自动化的yaml文件么?爽~

yaml生成

考虑到rap2接口文档数据比较多,所以我们就分模块写入到yaml文件中,将生成的yaml文件打包成一个zip压缩包。 用到的模块有:zipfile、yaml,我们来来看看代码是怎么写的?

import yaml
import zipfile
import uuid
import time
from utils.FILE_PATH import DOWNLOAD_PATH

class ToYaml(object):

    @classmethod
    def to_yaml(cls, name, data_list):
        #设置文件名
        file_name = f"{name}-{uuid.uuid4().hex}.zip"
        #创建一个zip文件对象,压缩时mode为w
        with zipfile.ZipFile(f"{DOWNLOAD_PATH}/{file_name}", 'w') as z:
            #分模块写入数据
            for data in data_list:
                time_str = str(round(time.time() * 1000))
                #避免重复,拼接时间戳
                yaml_name = f"{data['modules']}-{time_str}.yaml"
                yaml_path = f"{DOWNLOAD_PATH}/{yaml_name}"
                with open(yaml_path, "w", encoding="utf-8") as f:
                    #default_flow_style 关闭flow流格式
                    #sort_keys 关闭ascii排序
                    #allow_unicode 支持写入中文
                    yaml.safe_dump(data, f, default_flow_style=False, sort_keys=False, allow_unicode=True)
                #第一个参数为文件路径,第二个参数为添加到zip后保存的名称
                z.write(yaml_path,yaml_name)
        return file_name

上面的代码有个巧妙之处,文件命名时,为避免重复,我们拼接了uuid,这对于后续开放页面提供入口导出有很大的帮助~ 生成文件展示: image.png 解压后,里面是各个模块的yaml文件 image.png 打开yaml文件后对应展示 image.png 项目地址:github.com/JokerChat/A…

后续扩展

  • 将数据生成生成jmeter脚本(jmx)
  • 将上述功能,做成api,开放给小伙伴使用
  • 对接api,做成前端页面,让小伙伴体验更完美

本期介绍了利用解析回来的数据生成yaml格式的接口自动化用例,我们下期再见👋🏻👋🏻👋🏻俾个like再走啦