自动化测试--如何使用YAML存放测试用例

简介: YAML 是一种可读性非常高,与程序语言数据结构非常接近。同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言。YAML是 "YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。

yaml文件存放测试用例


一、YAML简介


YAML 是一种可读性非常高,与程序语言数据结构非常接近。同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言。

YAML是 "YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。

这么命名的方式,表示 YAML 强调的不是标记,而是数据本身。


二、基本语法


1.大小写敏感

2.使用缩进表示层级关系

3.不允许使用 TAB 键来缩进,只允许使用空格键来缩进

4.缩进的空格数量不重要

5.使用"#"来表示注释


三、支持的数据格式


1.对象:键值对的集合,又称映射 (mapping) / 哈希(hashes)/ 字典 (dictionary)

2.数组: 一组按次序排列的值,又称序列 (sequence) / 列表 (list)

3.纯量 (scalars) :单个的,不可再分的值,

常见的纯量:字符串、布尔值、整数、浮点数、null、时间、日期


四、数据格式简单示例


1、对象数据格式

yaml格式:

• name: xiaoming

读取出来的格式:

• {'name':'xiaoming'}

2、数组数据格式(在前面添加 ‘-’ 读出来就是数组格式)

yaml格式:

• - list1
• - list2
• - list3

读取出来的格式:

• ['list1', 'list2', 'list3']

3、纯量数据格式

yaml格式:

• number: 18.5
• string: hello
• bool: true
• nothing: ~
• date: 2020-04-21
• time: 2020-04-21 13:14:21

读取出来的格式:

• {
•   'number': 18.5,
•   'string': 'hello',
•   'bool': True,
•   'nothing': None,
•   'date': datetime.date(2020, 4, 21),
•   'time': datetime.datetime(2020, 4, 21, 13, 14, 21)
• }


五、YAML使用


1、安装yaml库

• pip install pyyaml

2、导入yaml库

• import yaml

3、读取数据

• with open(file="conf.yaml", encoding='utf8') as f:
• data = yaml.load(f, yaml.FullLoader)

【注】:YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.

data = yaml.load(f)

为了去除这个警告,我们可以在yaml.load( )加一个参数 yaml.FullLoader 即可

4、写入数据(mode参数:w,覆盖写入, a,追加写入)

• new_data = {'name': 'Tom'}
• with open(file="conf.yaml", mode='w', encoding="utf-8") as f:
• yaml.dump(new_data, f)


六、YAML文件存放测试用例数据


yaml测试用例示例

• register:
• - case_id: 1
• title: 注册用例1
• method: POST
• url: /register
• data:
• account: '123456789'
• pwd: '12345678'
• expect:
• code: 0
• msg: OK
• - case_id: 2
• title: 注册用例2
• method: POST
• url: /register
• data:
• account: '123456788'
• pwd: '12345678'
• type: 1
• expect:
• code: 0
• msg: OK
• login:
• - case_id: 1
• title: 登陆用例1
• method: POST
• url: /login
• data:
• account: '123456789'
• pwd: '12345678'
• expect:
• code: 0
• msg: OK
• - case_id: 2
• title: 登陆用例2
• method: POST
• url: /login
• data:
• account: '123456788'
• pwd: '12345678'
• expect:
• code: 0
• msg: OK

 

读取出的数据(清晰明了)

• {
• 'register': [
• {'case_id': 1, 'title': '注册用例1', 'method': 'POST', 'url': '/register', 'data': {'account': '123456789', 'pwd': '12345678'}, 'expect': {'code': 0, 'msg': 'OK'}},
• {'case_id': 2, 'title': '注册用例2', 'method': 'POST', 'url': '/register', 'data': {'account': '123456788', 'pwd': '12345678', 'type': 1}, 'expect': {'code': 0, 'msg': 'OK'}}
• ],
• 'login': [
• {'case_id': 1, 'title': '登陆用例1', 'method': 'POST', 'url': '/login', 'data': {'account': '123456789', 'pwd': '12345678'}, 'expect': {'code': 0, 'msg': 'OK'}},
• {'case_id': 2, 'title': '登陆用例2', 'method': 'POST', 'url': '/login', 'data': {'account': '123456788', 'pwd': '12345678'}, 'expect': {'code': 0, 'msg': 'OK'}}
• ]
• }

 

七、对读取YAML文件进行封装


• class YamlHandle(object):
• def __init__(self, conf_file):
• self.conf_file = conf_file
• def load(self) -> dict:
• """
•         读取yaml文件,获取全部数据
•         :return: dict
•         """
• with open(file=self.conf_file, encoding='utf8') as f:
• data = yaml.load(f, yaml.FullLoader)
• return data
• def get_data(self, node) -> list:
• """
•         获取节点数据
•         :param node: 节点名称
•         :return: dict&str
•         """
• return self.load()[node]

yaml 文件通过 pyyaml 库转换后就是 Python 中对应的数据类型。直接进行操作即可,相较从 excel 中读取数据全部是字符串的方式来说,处理更方便。相对于 json 格式,可读性更高。


目录
相关文章
|
4月前
|
设计模式 前端开发 测试技术
告别脆弱:构建稳定UI自动化测试的3个核心策略
告别脆弱:构建稳定UI自动化测试的3个核心策略
520 113
|
5月前
|
存储 关系型数据库 测试技术
玩转n8n测试自动化:核心节点详解与测试实战指南
n8n中节点是自动化测试的核心,涵盖触发器、数据操作、逻辑控制和工具节点。通过组合节点,测试工程师可构建高效、智能的测试流程,提升测试自动化能力。
|
7月前
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
954 0
|
5月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
512 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
5月前
|
自然语言处理 前端开发 测试技术
使用 Playwright MCP 实现 UI 自动化测试
本文介绍如何结合Playwright与MCP协议实现智能化UI自动化测试。通过自然语言指令控制浏览器,降低技术门槛,提升效率,并涵盖环境搭建、核心功能、实战案例及最佳实践,展现对话式自动化的未来趋势。
|
5月前
|
Java 测试技术 数据安全/隐私保护
通过yaml文件配置自动化测试程序
通过yaml文件可以将自动化测试环境,测试数据和测试行为分开,请看一下案例
174 4
|
7月前
|
人工智能 前端开发 测试技术
如何让AI帮你做前端自动化测试?我们这样落地了
本文介绍了一个基于AI的UI自动化测试框架在专有云质量保障中的工程化实践。
2936 22
如何让AI帮你做前端自动化测试?我们这样落地了
|
7月前
|
Web App开发 开发框架 .NET
Playwright 自动化测试系列(6)| 第三阶段:测试框架集成​指南:参数化测试 + 多浏览器并行执行
Pytest 与 Playwright 集成可提升自动化测试效率,支持参数化测试、多浏览器并行执行及统一报告生成。通过数据驱动、Fixture 管理和并行优化,显著增强测试覆盖率与执行速度,适用于复杂 Web 应用测试场景。
|
6月前
|
人工智能 IDE 测试技术
Browser-Use在UI自动化测试中的应用
Browser-Use是一款浏览器自动化工具,具备视觉与HTML解析、多标签管理、操作记录与复现、自定义操作、自我纠正及并行执行等功能,助力AI智能体高效完成网页任务。
680 0

热门文章

最新文章