专栏首页测吧测试开发Python 自动化测试(四):数据驱动
原创

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 文件作为用例数据源,控制测试用例的执行,使测试用例数据维护更加方便快捷。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 测试开发基础 mvn test | 利用 Maven Surefire Plugin 做测试用例基础执行管理

    这个时候就需要 Maven 登场了,利用 Maven 的Maven-Surefire-Plugin插件可以帮助我们完成上述的目标!它可以通过命令行的形式来管理我...

    霍格沃兹测试开发
  • Selenium自动化测试实战 | 自动侦测浏览器版本并下载对应的浏览器驱动

    前天在群里聊天时,有同学说 Appium 官方支持自动下载兼容的浏览器驱动,想来Selenium也有类似的方法,于是在网上搜索一番。参考了Medium上一篇文章...

    霍格沃兹测试开发
  • Python 自动化测试(五): Pytest 结合 Allure 生成测试报告

    所以打造一个美观、一目了然的测试报告,清晰的反应质量问题,并提供给相关人员了解项目的整体状态,是非常必要的。

    霍格沃兹测试开发
  • 总结 | 云脑科技徐昊:AutoML 工程实践与大规模行业应用 | AI研习社104期大讲堂

    AI 科技评论按:AutoML 是今年的机器学习的热点,该技术潜力很大,在工程实践能够产生巨大的价值。现阶段,业界主要在探讨 AutoML 的难点与方向阶段,目...

    AI科技评论
  • 让MongoDB存储引擎为快速存储设备做好准备

    过去二十年,存储硬件的性能提升了两个数量级。首先,是SSD的出现;然后是计算机总线接口从SATA到PCIe的转变;最后在非易失性内存技术和制造工艺上的创新。就在...

    MongoDB中文社区
  • Python 版 WordCount

    一份执着✘
  • 60天,4位诺奖得主,他们将这样改造区块链

    早在区块链受到广泛关注前,Oliver Hart就已开始钻研合约的奥秘。1976年,还是普林斯顿大学经济学博士的他,就已开始探索企业如何利用合约进行交互,以及出...

    区块链大本营
  • ECCV 2020 | 从一种拓扑视角来优化神经网络的连通性的解读

    本文是计算机视觉领域顶级会议 ECCV 2020 入选论文《Learning Connectivity of Neural Networks from a To...

    AI科技评论
  • 使用 Python 分析数据得先熟悉编程概念?这个观念要改改了​

    AI 开发者按:大多数有抱负的数据科学家是通过学习为开发人员开设的编程课程开始认识 python 的,他们也开始解决类似 leetcode 网站上的 pytho...

    AI研习社
  • 田渊栋:深度学习没有解决的理论问题(附 ICLR 论文 3 篇)

    【新智元导读】Facebook 人工智能组研究员、围棋项目负责人田渊栋昨日在知乎专栏撰文,介绍投稿 ICLR2017 的三篇论文,其中两篇应用(包括获 Doom...

    新智元

扫码关注云+社区

领取腾讯云代金券