首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >pytest数据驱动-pytest.mark.parametrize

pytest数据驱动-pytest.mark.parametrize

作者头像
用户5521279
发布于 2021-01-12 06:51:20
发布于 2021-01-12 06:51:20
2.4K0
举报
文章被收录于专栏:搜狗测试搜狗测试

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

数据驱动的数据源形式可以是函数外的数据集合:如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 支持的格式就行,

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Pytest系列(9) - 参数化@pytest.mark.parametrize
https://www.cnblogs.com/poloyy/category/1690628.html
小菠萝测试笔记
2020/06/09
1.3K0
Pytest系列(9) - 参数化@pytest.mark.parametrize
Python Pytest装饰器@pytest.mark.parametrize详解
Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,类似DDT 如:@pytest.mark.parametrize('请求方式,接口地址,传参,预期结果',[('get','www.baidu.com','{"page":1}','{"code":0,"msg":"成功"})',('post','www.baidu.com','{"page":2}','{"code":0,"msg":"成功"}')])
王大力测试进阶之路
2019/10/25
8.2K0
数据驱动测试-从方法探研到最佳实践
Tech 导读 在自动化测试实践中,测试数据是制造测试场景的必要条件,本文主要讲述了在沟通自动化框架如何分层,数据如何存储,以及基于单元测试pytest下如何执行。并通过实践案例分享,提供数据驱动测试的具体落地方案。
京东技术
2023/01/05
9820
数据驱动测试-从方法探研到最佳实践
软件测试/测试开发/全日制|Pytest参数化神器,pytest.mark.parametrize()使用
当我们要使用pytest输入多个数据对一个功能进行测试时,如果写多个测试用例的话,那就完全体现不出通过代码来执行测试的优势了,这个时候,就轮到pytest的参数化功能闪亮登场了。所谓参数化,就是就是把测试过程中的数据提取出来,通过参数传递不同的数据来驱动用例运行。其实也就是数据驱动的概念。本文就给大家介绍一下pytest的参数化和数据驱动。
霍格沃兹测试开发Muller老师
2024/01/11
2190
软件测试/测试开发/全日制|Pytest参数化神器,pytest.mark.parametrize()使用
软件测试/测试开发/全日制|Pytest参数化神器,pytest.mark.parametrize()使用
当我们要使用pytest输入多个数据对一个功能进行测试时,如果写多个测试用例的话,那就完全体现不出通过代码来执行测试的优势了,这个时候,就轮到pytest的参数化功能闪亮登场了。所谓参数化,就是就是把测试过程中的数据提取出来,通过参数传递不同的数据来驱动用例运行。其实也就是数据驱动的概念。本文就给大家介绍一下pytest的参数化和数据驱动。
霍格沃兹测试开发Muller老师
2024/01/10
2690
【Pytest篇】装饰器@pytest.mark.parametrize多样参数化(二)
上一篇:Python Pytest装饰器@pytest.mark.parametrize详解
王大力测试进阶之路
2019/11/06
1.8K0
Pytest装饰器@pytest.mark.parametrize数据驱动(三)​
Python Pytest装饰器@pytest.mark.parametrize详解
王大力测试进阶之路
2019/11/06
2K0
Pytest装饰器@pytest.mark.parametrize数据驱动(三)​
pytest文档67-在 pytest.mark.parametrize 中使用 fixture
测试用例参数化的时候,使用 pytest.mark.parametrize 参数化传测试数据,如果我们想引用前面 不同fixture 返回的数据当测试用例的入参,目前没好的解决办法。 可以用fixture 参数化 prams 来间接解决这个问题
上海-悠悠
2020/12/17
1.6K0
Pytest之参数化
点击上方蓝字“ITester软件测试小栈“关注我,每周一、三、五早上 08:30准时推送,每月不定期赠送技术书籍。
可可的测试小栈
2020/09/03
8760
Pytest之参数化
一篇文章为你揭秘pytest的基本用法
pytest是一个测试框架,功能与unittest类似,完全兼容unittest的功能。一般做接口测试的时候,以前用的多的是python+requests+httptestrunner完成接口自动化测试与报告生成,看到现在很多都在用pytest框架,我也来学习一下,接口测试中pytest应用广泛的是通过python+pytest+allure生成测试报告,报告格式比较美观。
小博测试成长之路
2021/03/06
6.7K0
pytest参数化:@pytest.mark.parametrize
内置的pytest.mark.parametrize装饰器可以用来对测试函数进行参数化处理。下面是一个典型的范 例,检查特定的输入所期望的输出是否匹配: test_expectation.py
流柯
2023/02/17
4920
Python测试框架pytest(17)参数化parametrize
@pytest.mark.parametrize 允许在测试函数或类中定义多组参数和 fixtures。
wangmcn
2022/07/26
7990
Python测试框架pytest(17)参数化parametrize
Python 自动化测试(四):数据驱动
在实际的测试工作中,通常需要对多组不同的输入数据,进行同样的测试操作步骤,以验证我们的软件质量。这种测试,在功能测试中非常耗费人力物力,但是在自动化中,却比较好实现,只要实现了测试操作步骤,然后将多组测试数据以数据驱动的形式注入,就可以实现了。
霍格沃兹测试开发
2020/10/28
9240
pytest parametrize fixture_参数化查询
当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化。
全栈程序员站长
2022/09/16
4930
Pytest 系列(28)- 参数化 parametrize + @allure.title() 动态生成标题
https://www.cnblogs.com/poloyy/category/1690628.html
小菠萝测试笔记
2020/10/30
1.4K0
Pytest 系列(28)- 参数化 parametrize + @allure.title() 动态生成标题
软件测试|Yaml实现测试数据驱动
理念与同“UI自动化测试框架”中的“测试步骤的数据驱动”相同,接口中的测试步骤的数据驱动就是将接口的参数(比如 method、url、param等)封装到 yaml 文件中管理。当测试步骤发生改变,只需要修改 yaml 文件中的配置即可。
霍格沃兹测试开发Muller老师
2023/01/04
8760
软件测试|详解 Pytest 参数化:简化测试用例的编写
Pytest 是一个广泛使用的 Python 测试框架,它提供了丰富的功能来编写和执行测试用例。其中一个强大的特性是参数化,它允许我们通过一种简洁的方式运行多个输入参数的相似测试用例,从而减少冗余的代码。本文将详细介绍 Pytest 的参数化功能以及如何使用它来简化测试用例的编写。
霍格沃兹测试开发Muller老师
2023/08/16
6040
软件测试|详解 Pytest 参数化:简化测试用例的编写
接口测试框架实战(五) | 测试数据的数据驱动
数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。简单来说,就是参数化的应用。数据量小的测试用例可以使用代码的参数化来实现数据驱动,数据量大的情况下建议使用一种结构化的文件(例如 YAML,JSON 等)来对数据进行存储,然后在测试用例中读取这些数据。
霍格沃兹测试开发
2020/10/15
1.1K0
pytest数据驱动及conftest文件及装饰器使用
一:数据驱动 file_operate.py文件 # coding=utf-8 """ @Project :pachong-master @File :file_operate.py @Author :gaojs @Date :2022/7/1 23:00 @Blogs : https://www.gaojs.com.cn """ import openpyxl as xl import yaml def read_excel(filepat
懿曲折扇情
2022/08/24
6360
pytest学习和使用12-Unittest和Pytest参数化详解
1 Unittest参数化1.1 ddt1.1.1 简介数据驱动ddt可以实现测试数据与测试脚本的分离;通过ddt来将测试数据加载到脚本中;1.1.2 说明测试数据为嵌套字典的列表;测试类前加修饰@ddt;测试用例前加修饰@data()运行后用例会自动加载成多个单独的用例。1.1.3 安装pip install ddt1.1.4 版本信息C:\Users\Administrator>pip show ddtName: ddtVersion: 1.4.2Summary: Data-Driven/Decorat
虫无涯
2023/02/17
6740
推荐阅读
相关推荐
Pytest系列(9) - 参数化@pytest.mark.parametrize
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档