Python 自动化测试(四):数据驱动
本文节选自霍格沃玆测试学院内部教材,文末链接进阶学习。
在实际的测试工作中,通常需要对多组不同的输入数据,进行同样的测试操作步骤,以验证我们的软件质量。这种测试,在功能测试中非常耗费人力物力,但是在自动化中,却比较好实现,只要实现了测试操作步骤,然后将多组测试数据以数据驱动的形式注入,就可以实现了。
前面文章学习了参数化,当数据量非常大的时候,我们可以将数据存放到外部文件中,使用的时候将文件中的数据读取出来,方便测试数据的管理。数据与测试用例分别管理,可以利用外部数据源 YAML、JSON、Excel、CSV 管理测试数据。
pytest 结合 YAML
YAML 是一种容易阅读、适合表示程序语言的数据结构、可用于不同程序间交换数据、丰富的表达能力和可扩展性、易于使用的语言。通过缩进或符号来表示数据类型。
pyyaml 模块在 Python 中用于处理 YAML 格式数据,主要使用 yaml.safe_dump() 和 yaml.safe_load() 函数将 Python 值和 YAML 格式数据相互转换。工作中常常使用 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("datas.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 文件作为用例数据源,控制测试用例的执行,使测试用例数据维护更加方便快捷。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了