持续创作,加速成长!这是我参与「掘金日新计划 · 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,这对于后续开放页面提供入口导出有很大的帮助~
生成文件展示:
解压后,里面是各个模块的yaml文件
打开yaml文件后对应展示
项目地址:github.com/JokerChat/A…
后续扩展
- 将数据生成生成jmeter脚本(jmx)
- 将上述功能,做成api,开放给小伙伴使用
- 对接api,做成前端页面,让小伙伴体验更完美
本期介绍了利用解析回来的数据生成yaml格式的接口自动化用例,我们下期再见👋🏻👋🏻👋🏻俾个like再走啦