软件测试 | YAML是什么?

518 篇文章 3 订阅
514 篇文章 2 订阅

数据驱动

在实际的测试工作中,通常需要对大量的测试数据进行验证,以保证软件的正确性。这种数据量大的测 试,在功能测试中非常耗费人力物力,但是在自动化测试中,却非常容易实现。只要编写好测试的操作 步骤,然后将多组不同的测试数据传入到相同的测试用例中,就能轻松实现对不同测试数据的验证。 前面学习了参数化用例,当数据量非常大的时候,我们不能把所有的用例都放在测试模块中。可以将数 据存放到一个外部文件中,使用的时候将外部文件的数据读取出来,也方便测试数据的管理。数据与测 试用例分别管理,可以利用外部数据源 YAML、Json、Excel、CSV 等工具管理测试数据。这里推荐使 用 YAML 工具。

YAML 介绍

YAML 是在开发中的一种标记语言,适合用来表达或编辑数据结构、各种配置文件等。YAML 不局限于 语言,可以用于不同语言程序间的数据传递(类似于 Json)。YAML 具有丰富的语法结构和可扩展性, YAML 的配置文件后缀为 .yml 或 .yaml(例如:data.yaml)。

YAML 的基本语法

大小写敏感

使用缩进表示层级关系

缩进不允许使用 tab,只允许空格

缩进的空格数不重要,只要相同层级的元素左对齐即可

'#'表示注释

YAML 支持数据类型

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

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

纯量:单个的、不可再分的值

YAML 表示列表

以 - 开头的行表示构成一个数组:

- hogwarts1
- hogwarts2
- hogwarts3

对应的 python 的数据结构是:['hogwarts1','hogwarts2','hogwarts3']

也可以列表嵌套列表,例如:

-
 - hogwarts1
 - hogwarts2
 - hogwarts3

对应的 python 的数据结构是: [['hogwarts1','hogwarts2','hogwarts3']]

YAML 表示字典

key: value,冒号后面要加空格。

id: 1
name: company1
price: 200W

上面表达 python 里的字典: {'id': 1, 'name': 'company1', 'price': '200W'} 相对复杂的例子:

hogwarts:
 -
 id: 1
 name: 格兰芬多
 price: 200
 -
 id: 2
 name: 拉文克劳
 price: 200

对应的 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 格式数据相互转换。

安装

pip install PyYAML

案例

创建用例文件以及数据文件来完成数据驱动的测试案例,创建一个文件夹 testdata,在这个文件夹下创 建 data.yml 和 test_yaml.py 文件。

创建 data.yml 文件:

- - 1
 - 2
- - 20
 - 30

创建“test_yaml.py”,代码如下:

import pytest
import yaml
@pytest.mark.parametrize("a,b", yaml.safe_load(open("data.yml",\
encoding='utf-8')))
def test_foo(a,b):
 print(f"a + b = {a + b}")

代码分析:

yaml 文件里定义了列表数据,通过 open( ) 方法获取 data.yml 文件对象,使用 yaml.safe_load() 加载这个文件对象,将 yaml 格式文件转换为 Python 对象,分别传递到用例中生成多条用例执行。

运行结果:

...
test_params.py::test_foo[1-2]
test_params.py::test_foo[20-30]
...

运行结果中 [1-2] 和 [20-30] 表示传入的两组参数,分别传入 test_foo( ) 用例方法中执行,并且 分别生成两条测试结果。pytest 结合 yaml 实现数据驱动,yaml 文件作为用例数据源,驱动测试用例的 执行,使测试用例数据维护更加方便快捷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值