自动化测试--如何使用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 格式,可读性更高。


目录
相关文章
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
智能化软件测试:AI驱动的自动化测试策略与实践####
本文深入探讨了人工智能(AI)在软件测试领域的创新应用,通过分析AI技术如何优化测试流程、提升测试效率及质量,阐述了智能化软件测试的核心价值。文章首先概述了传统软件测试面临的挑战,随后详细介绍了AI驱动的自动化测试工具与框架,包括自然语言处理(NLP)、机器学习(ML)算法在缺陷预测、测试用例生成及自动化回归测试中的应用实例。最后,文章展望了智能化软件测试的未来发展趋势,强调了持续学习与适应能力对于保持测试策略有效性的重要性。 ####
|
2月前
|
测试技术
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
本文是关于自动化测试项目实战笔记,主要介绍了如何测试用户注册功能,包括验证码错误、注册成功以及弹框处理的测试步骤和代码实现。
94 2
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
|
2月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
211 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
本文介绍了Python的unittest框架的基础用法,包括测试初始化(setup)、清除(tearDown)函数的使用,以及assertEqual和assertGreaterEqual等断言方法,并展示了如何创建测试用例,强调了测试函数需以test_开头才能被运行。
64 1
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
|
20天前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
2月前
|
测试技术 数据安全/隐私保护 Python
自动化测试项目实战笔记(四):测试用户登录(账号密码错误,成功,出现弹框等情况)
本文介绍了使用Selenium进行自动化测试时如何测试用户登录的不同情况,包括账号密码错误、登录成功以及处理登录时出现的弹框,并提供了相应的Python代码实现。
64 0
自动化测试项目实战笔记(四):测试用户登录(账号密码错误,成功,出现弹框等情况)
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
67 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
23天前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
25 0
|
3月前
|
人工智能 测试技术 Python
基于 LangChain 的自动化测试用例的生成与执行
本章节详细介绍了如何利用人工智能技术自动化完成Web、App及接口测试用例的生成与执行过程,避免了手动粘贴和调整测试用例的繁琐操作。通过封装工具包与Agent,不仅提升了测试效率,还实现了从生成到执行的一体化流程。应用价值在于显著节省时间并提高测试自动化水平。
|
3月前
|
安全 JavaScript 前端开发
自动化测试的魔法:如何用Python编写你的第一个测试脚本
【8月更文挑战第41天】在软件的世界里,质量是王道。而自动化测试,就像是维护这个王国的骑士,确保我们的软件产品坚不可摧。本文将引导你进入自动化测试的奇妙世界,教你如何使用Python这把强大的魔法杖,编写出能够守护你代码安全的第一道防护咒语。让我们一起开启这场魔法之旅吧!
下一篇
无影云桌面