软件测试 | YAML 是什么?
数据驱动
在实际的测试工作中,通常需要对大量的测试数据进行验证,以保证软件的正确性。这种数据量大的测 试,在功能测试中非常耗费人力物力,但是在自动化测试中,却非常容易实现。只要编写好测试的操作 步骤,然后将多组不同的测试数据传入到相同的测试用例中,就能轻松实现对不同测试数据的验证。 前面学习了参数化用例,当数据量非常大的时候,我们不能把所有的用例都放在测试模块中。可以将数 据存放到一个外部文件中,使用的时候将外部文件的数据读取出来,也方便测试数据的管理。数据与测 试用例分别管理,可以利用外部数据源 YAML、Json、Excel、CSV 等工具管理测试数据。这里推荐使 用 YAML 工具。
YAML 介绍
YAML 是在开发中的一种标记语言,适合用来表达或编辑数据结构、各种配置文件等。YAML 不局限于 语言,可以用于不同语言程序间的数据传递(类似于 Json)。YAML 具有丰富的语法结构和可扩展性, YAML 的配置文件后缀为 .yml 或 .yaml(例如:data.yaml)。
YAML 的基本语法
大小写敏感
使用缩进表示层级关系
缩进不允许使用 tab,只允许空格
缩进的空格数不重要,只要相同层级的元素左对齐即可
'#'表示注释
YAML 支持数据类型
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量:单个的、不可再分的值
YAML 表示列表
以 - 开头的行表示构成一个数组:
对应的 python 的数据结构是:['hogwarts1','hogwarts2','hogwarts3']
也可以列表嵌套列表,例如:
对应的 python 的数据结构是: [['hogwarts1','hogwarts2','hogwarts3']]
YAML 表示字典
key: value,冒号后面要加空格。
上面表达 python 里的字典: {'id': 1, 'name': 'company1', 'price': '200W'} 相对复杂的例子:
对应的 python 的数据结构是: {'hogwarts': [{'id': 1, 'name': '格兰芬多', 'price': 200}, {'id': 2, 'name': '拉文克劳', 'price': 200}]}
YAML 表示纯量
纯量是最基本的,不可再分的值,包括:
字符串
布尔值
整数
浮点数
Null
时间
日期
pytest 结合 YAML
PyYAML 模块在 python 中用于处理 YAML 格式数据,主要使用 yaml.safe_dump() 和 yaml.safe_load() 函数将 Python 对象和 YAML 格式数据相互转换。
安装
案例
创建用例文件以及数据文件来完成数据驱动的测试案例,创建一个文件夹 testdata,在这个文件夹下创 建 data.yml 和 test_yaml.py 文件。
创建 data.yml 文件:
创建“test_yaml.py”,代码如下:
代码分析:
yaml 文件里定义了列表数据,通过 open( ) 方法获取 data.yml 文件对象,使用 yaml.safe_load() 加载这个文件对象,将 yaml 格式文件转换为 Python 对象,分别传递到用例中生成多条用例执行。
运行结果:
运行结果中 [1-2] 和 [20-30] 表示传入的两组参数,分别传入 test_foo( ) 用例方法中执行,并且 分别生成两条测试结果。pytest 结合 yaml 实现数据驱动,yaml 文件作为用例数据源,驱动测试用例的 执行,使测试用例数据维护更加方便快捷。
搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核
评论