专栏首页搜狗测试pytest数据驱动-pytest.mark.parametrize

pytest数据驱动-pytest.mark.parametrize

在自动化测试中很重要的一个环节就是处理测试数据,在测试框架中,测试数据与功能函数分离,单独存储,运行自动化测试时,框架会读取数据源模块中的数据,把数据作为参数传递到功能函数中,由于测试用例一般覆盖多条不同输入,根据不同的前置条件,选取多条数据执行多次功能函数,以减少重复代码;不同输入条件之间的测试结果互相之间不受影响,来实现数据驱动。

数据驱动的数据源形式可以是函数外的数据集合:如CSV 文件、Excel 、json、txt 文件,以及数据库等多种形式。

下面先结合简单案例分享小编学习到的pytest一个应用比较广泛的数据驱动框架: parameterize,一看秒懂,一看秒懂,一看秒懂!!!

pytest.mark.parametrize 是 pytest 的内置装饰器,它允许在 function 或者 class 上定义多组参数和 fixture来实现数据驱动。

@pytest.mark.parametrize() 装饰器接收两个参数:第一个参数以字符串的形式存在,表示被被测试函数接受的参数,假如被测试函数有多个参数,则以逗号分开。第二个参数用于保存测试数据。假如只有一组数据,则以列表的形式存在如[0,1],如果有多组数据,以列表嵌套元组的形式存在(如[(0,1), (1,2)])。

举例。

pytest.mark.parametrize单参数

运行结果

以上是单参数的一个例子,在这个例子中,test_equal函数接收一个参数 num,这个参数有三条数据,分别是1,2,3 。

pytest.mark.parametrize多参数

通常在工作中进行测试的参数不止一个,多参数还是比较常见的,因为不仅仅包括用于测试的数据, 还包括用于验证的数据。

示例1

运行结果

以上是对功能函数sum(num)自然数列求和(功能函数一个入参)的简单验证,包含 两条测试用例的测试case和预期结果

示例2

运行结果

以上是对功能函数sum_of_two(num1,num2)两数之和(功能函数两个入参)的简单验证,包含三条测试用例和预期结果

总结pytest 进行数据驱动的基本思路

pytest可以通过 pytest.mark.parametrize 来实现数据驱动,而 pytest.mark.parametrize 接受的数据格式要求为:

a.如果只有一组数据,以列表的形式存在;

b.如果有多组数据,以列表嵌套元组的形式存在(如[0,1] 或者 [(0,1), (1,2)])。

根据以上规则,可以联想到只需要创建一个方法,在该方法里解析所提供的数据格式CSV 文件、Excel 、json、txt 文件等,解析后返回 pytest.mark.parametrize 支持的格式就行,

具体解析方法根据实际数据源的格式进行编写即可。

本文分享自微信公众号 - 搜狗测试(SogouQA),作者:EnjoY

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-12-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Pytest之参数化

    点击上方蓝字“ITester软件测试小栈“关注我,每周一、三、五早上 08:30准时推送,每月不定期赠送技术书籍。

    ITester软件测试小栈
  • Pytest装饰器@pytest.mark.parametrize数据驱动(三)​

    Python Pytest装饰器@pytest.mark.parametrize详解

    王大力测试进阶之路
  • Python+Unittest参数化之parameterized数据驱动

    Unittest第三方库parameterized类似Python数据驱动模块DDT、Pytest@pytest.mark.parametrize【Pytest...

    王大力测试进阶之路
  • Pytest 系列(28)- 参数化 parametrize + @allure.title() 动态生成标题

    https://www.cnblogs.com/poloyy/category/1690628.html

    小菠萝测试笔记
  • 接口测试框架实战(五) | 测试数据的数据驱动

    数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。简单来说,就是参数化的应用。数据量小的测试用例可以使用代码的参数化来实现数据驱动,数据量...

    霍格沃兹测试开发
  • Pytest+Allure+Jenkins接口自动化项目实战(一)

    经过一周多时间,基于python+pytest+excel+allure框架的接口自动化测试初版已基本实现,包括基本配置读取、用例读取、用例执行...

    王大力测试进阶之路
  • Pytest系列(18)- 超美测试报告插件之allure-pytest的基础使用

    https://www.cnblogs.com/poloyy/category/1690628.html

    小菠萝测试笔记
  • 带你认识Pytest(四)

    上一篇带大家初步了解Pytest的核心知识点fixture,这一篇我们将继续对fixture进行介绍,我们会对fixture的调用方式进行一些补充,另外我们会介...

    周辰晨
  • 如何使用Pytest进行自动化测试

    目前有多种可用的测试框架和工具。这些框架的风格也各不相同,比如数据驱动、关键字驱动、混合、BDD等等。您可以选择最适合您的要求。

    HuangWeiAI

扫码关注云+社区

领取腾讯云代金券