专栏首页测吧测试开发接口测试框架实战(五) | 测试数据的数据驱动
原创

接口测试框架实战(五) | 测试数据的数据驱动

本文节选自霍格沃玆测试学院内部教材,文末链接进阶学习!

数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。简单来说,就是参数化的应用。数据量小的测试用例可以使用代码的参数化来实现数据驱动,数据量大的情况下建议使用一种结构化的文件(例如 YAML,JSON 等)来对数据进行存储,然后在测试用例中读取这些数据。

参数化实现数据驱动

参数化数据驱动原理与之前分享的 接口测试框架实战(二) | 搞定多环境下的接口测试 大同小异。

本文依然使用 @pytest.mark.parametrize 装饰器来进行参数化,使用参数化来实现数据驱动。

通过参数化的方式,分别判断 id 为 2,3 的部门的 parentid 为 1:

import pytest

class TestDepartment:
    department = Department()

    @pytest.mark.parametrize("id", [2, 3])
    def test_department_list(self, id):
        r = self.department.list(id)
        assert self.department.jsonpath(expr="$..parentid")[0] == 1

上面的代码首先使用 @pytest.mark.parametrize 装饰器,传递了两组数据,测试结果显示有两条测试用例被执行,而不是一条测试用例。也就是 pytest 会将两组测试数据自动生成两个对应的测试用例并执行,生成两条测试结果。

YAML 文件实现数据驱动实战

当测试数据量大的情况下,可以考虑把数据存储在结构化的文件中。从文件中读取出代码中所需要格式的数据,传递到测试用例中执行。

本次实战以 YAML 进行演示。YAML 以使用动态字段进行结构化,它以数据为中心,比 Excel、csv、JSON、XML 等更适合做数据驱动。

将上面参数化的两组数据存储到 YAML 文件中,创建一个 data/department_list.yml 文件,代码如下:

- 2
- 3

上面的代码定义了一个 YAML 格式的数据文件 department_list.yml ,文件中定义了一个列表,列表中有两个数据,最后生成的是这样的数据格式:1,2 。将测试用例中参数化的数据改造成从 department_list.yml 文件中读取,代码如下:

class TestDepartment:
    department = Department()

    @pytest.mark.parametrize("id", \
    yaml.safe_load(open("../data/department_list.yml")))
    def test_department_list(self, id):
        r = self.department.list(id)
        assert self.department.jsonpath(expr="$..parentid")[0] == 1

上面的代码,只需要使用 yaml.safe_load() 方法,读取 department_list.yml 文件中的数据,分别传入到用例 test_department_list() 方法中完成输入与结果的验证。

更多接口测试框架实战进阶内容,我们在后续文章分享。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何从 0 开始学 Python 自动化测试开发(一)

    Python 作为大数据工程和 AI 的主流开发语言,近年来一直保持强劲的上升趋势。即使目前 AI 领域还没有大量的成功商业案例(盈利的)出现,Python 语...

    霍格沃兹测试开发
  • iOS 测试 | iOS 自动化性能采集

    ​今天小编跟大家分享一篇来自学院内部学员的技术分享,本文主要介绍了作者在进行 iOS 自动化性能采集的一些经验,希望对大家在进行 iOS 自动化测试时有一些启发...

    霍格沃兹测试开发
  • Python 自动化测试(三): pytest 参数化测试用例构建

    在之前的文章中主要分享了 pytest 的实用特性,接下来讲 Pytest 参数化用例的构建。

    霍格沃兹测试开发
  • 干货|遗传算法解决带时间窗的车辆路径规划问题(附java代码及详细注释)

    各位读者大家好,今天小编给大家分享如何用遗传算法求解带时间窗的车辆路径规划问题。算法的主要思想来自于论文:A simple and effective evol...

    用户1621951
  • 从15000个Python开源项目中精选的Top30,赶紧收藏

    导读:Mybridge AI推出了一个Python开源项目Top 30榜单,包括开源Python库、工具等。该榜单基于项目质量、用户参与度以及其他几个方面进行了...

    华章科技
  • 用pandas绘制箱体图(boxplot)

    箱体图是一种用于表示分布的图像,由五个分位数组成。很好用的图,但是excel要生成这个可就得曲线救国了,然而如果用python加上pandas的话就很easy啦...

    钱塘小甲子
  • 【python3】keras可视化出错,"dot.exe" not found in path和pydot failed to call GraphViz

    2、安装graphviz Windows安装包,下载msi格式:https://graphviz.gitlab.io/_pages/Download/Downl...

    种花家的奋斗兔
  • Python:zip 函数的用法

    zip() 接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个 tuple,然后返回由这些 tuple 组成的 list。

    丹枫无迹
  • Python 使用set()去除列表重复

    py3study
  • 避坑!用大数据告诉你,那些被淘汰的公司,都有哪些特征?

    不知道大家有没有听过一个段子,入职3天,公司倒闭了,由此,我想到了一个话题:如果可以提前知道什么样的公司会被淘汰,哪些因素会使员工离职,是不是能起到一些帮助?

    大数据分析不是事儿

扫码关注云+社区

领取腾讯云代金券