当前位置: 首页 > news >正文

Pytest之parametrize参数化

文章目录

  • 1.前言
  • 2.单参数
  • 3.多参数
  • 4.字典形式
  • 5.parametrize 结合 ids 参数

1.前言

在 pytest 中,parametrize 是一个非常实用的装饰器,它允许你对测试函数进行参数化,即使用不同的参数组合多次运行同一个测试函数,从而更高效地进行测试覆盖。

基本语法:

@pytest.mark.parametrize(argnames, argvalues)
  • argnames:这是一个字符串,表示要传入测试函数的参数名。如果有多个参数,参数名之间用逗号分隔。
  • argvalues:这是一个可迭代对象(如列表、元组等),其中每个元素代表一组参数值。如果 argnames 中有多个参数名,那么 argvalues 中的每个元素应该是一个包含对应数量值的元组。

2.单参数

以下是一个简单的单参数单次循环的案例:

import pytest@pytest.mark.parametrize('key',['value'])
def test_parametrize01(key):print(key)

运行结果:
在这里插入图片描述
除此之外,我们还是进行多次循环。

@pytest.mark.parametrize('char','String')
def test_parametrize02(char):print(char)

这里的可迭代对象是一个字符串,那么会将字符串每一个字符都赋值给参数
运行结果:
在这里插入图片描述
除了使用字符串,可以用列表

@pytest.mark.parametrize('type',['int','boolean','double'])
def test_parametrize03(type):print(type)

运行结果:
在这里插入图片描述

3.多参数

除了单参数外,还可以使用多参数
示例:

@pytest.mark.parametrize("a, b, expected", [(1, 2, 3), (4, 5, 9), (0, 0, 0)])
def test_parametrize04(a, b, expected):result = a + bassert result == expected

🌟可迭代对象的类型是列表,里面的值是用的元组

运行结果:
在这里插入图片描述
可以使用多个 pytest.mark.parametrize 装饰器来组合不同的参数化维度。
示例:

@pytest.mark.parametrize('x',[1,2])
@pytest.mark.parametrize('y',[3,4])
def test_parametrize05(x,y):print(f'x = {x},y = {y}')

运行结果:
在这里插入图片描述

4.字典形式

字典形式的可迭代参数也很简单
示例:

@pytest.mark.parametrize('student',[{'name':'zhangsan','age':18}])
def test_parametrize06(student):print(f"学生的姓名: {student['name']},年龄:{student['age']}")

运行结果:
在这里插入图片描述

5.parametrize 结合 ids 参数

parametrize 装饰器还支持 ids 参数,用于为每组参数值指定一个自定义的标识,这样在测试报告中可以更清晰地看到每个测试用例使用的是哪组参数。

@pytest.mark.parametrize("a, b, expected", [(1, 2, 3), (4, 5, 9), (0, 0, 0)],ids=["test_case_1", "test_case_2", "test_case_3"])
def test_parametrize07(a, b, expected):result = a + bassert result == expected

运行结果:
在这里插入图片描述
在测试结果中,每组参数对应的测试用例会显示为 test_parametrize07[test_case_1]、test_addition[test_case_2] 和 test_addition[test_case_3],方便区分和查看。

相关文章:

Pytest之parametrize参数化

文章目录 1.前言2.单参数3.多参数4.字典形式5.parametrize 结合 ids 参数 1.前言 在 pytest 中,parametrize 是一个非常实用的装饰器,它允许你对测试函数进行参数化,即使用不同的参数组合多次运行同一个测试函数,从而更高效地进行…...

Python面试(八股)

1. 可变对象和不可变对象 (1). 不可变对象( Immutable Objects ) 不可变对象指的是那些一旦创建后其内容就不能被修改的对象。如果尝试修改不可变对象的内容,将会创建一个新的对象而不是修改原来的对象。常见的不可变类型包括: …...

2024年第十五届蓝桥杯大赛软件赛省赛Python大学A组真题解析《更新中》

文章目录 试题A: 拼正方形(本题总分:5 分)解析答案试题B: 召唤数学精灵(本题总分:5 分)解析答案试题C: 数字诗意解析答案试题D:回文数组试题A: 拼正方形(本题总分:5 分) 【问题描述】 小蓝正在玩拼图游戏,他有7385137888721 个2 2 的方块和10470245 个1 1 的方块,他需…...

湖仓一体概述

湖仓一体之前,数据分析经历了数据库、数据仓库和数据湖分析三个时代。 首先是数据库,它是一个最基础的概念,主要负责联机事务处理,也提供基本的数据分析能力。 随着数据量的增长,出现了数据仓库,它存储的是…...

【行政区划获取】

行政区划获取 获取2023年的行政区划,并以 编码: 省市区 格式保存为字典方便后续调用 注:网址可能会更新,根据最新的来 # 获取并保存行政区划代码 import requests from lxml import etree import jsondef fetch_html(url):""&quo…...

【深入剖析:机器学习、深度学习与人工智能的关系】

深入剖析:机器学习、深度学习与人工智能的关系 在当今数字化时代,人工智能(AI)、机器学习(ML)和深度学习(DL)这些术语频繁出现在各种科技报道和讨论中,它们相互关联又各…...

Docker 学习(一)

一、Docker 核心概念 Docker 是一个开源的容器化平台,允许开发者将应用及其所有依赖(代码、运行时、系统工具、库等)打包成一个轻量级、可移植的“容器”,实现 “一次构建,随处运行”。 1、容器(Container…...

flink web ui未授权漏洞处理

本文通过nginx代理的方式来处理未授权漏洞问题。 1.安装nginx 通过yum install nginx 2.添加账号和密码 安装htpasswd工具,yum install httpd-tools sudo htpasswd -c /etc/nginx/conf.d/.passwd flink # 需安装httpd-tools‌:ml-citation{ref"1,4" dat…...

【vue-echarts】——03.配置项---tooltip

文章目录 一、tooltip提示框组件二、显示结果一、tooltip提示框组件 提示框组件,用于配置鼠标滑过或点击图表时的显示框 代码如下 Demo3View.vue <template><div class="about">...

【弹性计算】弹性裸金属服务器和神龙虚拟化(二):适用场景

《弹性裸金属服务器》系列&#xff0c;共包含以下文章&#xff1a; 弹性裸金属服务器和神龙虚拟化&#xff08;一&#xff09;&#xff1a;功能特点弹性裸金属服务器和神龙虚拟化&#xff08;二&#xff09;&#xff1a;适用场景弹性裸金属服务器和神龙虚拟化&#xff08;三&a…...

提升系统效能:从流量控制到并发处理的全面解析

在当今快速发展的数字时代&#xff0c;无论是构建高效的网络服务、管理海量数据&#xff0c;还是优化系统的并发处理能力&#xff0c;都是技术开发者和架构师们面临的重大挑战。本文集旨在深入探讨几个关键技术领域&#xff0c;包括用于网络通信中的漏桶算法与令牌桶算法的原理…...

计算机毕业设计SpringBoot+Vue.js贸易行业CRM系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

从头开始学SpringBoot—02ssmp整合及案例

《从头开始学SpringBoot》系列——第二篇 内容包括&#xff1a; 1&#xff09;SpringBoot实现ssmp整合 2&#xff09;SpringBoot整合ssmp的案例 目录 1.整合SSMP 1.1整合JUnit 1.2整合Mybatis 1.2.1导入对应的starter 1.2.2配置相关信息 1.2.3dao&#xff08;或是mapper&…...

0301 leetcode - 1502.判断是否能形成等差数列、 682.棒球比赛、657.机器人能否返回原点

1502.判断是否能形成等差数列 题目 给你一个数字数组 arr 。 如果一个数列中&#xff0c;任意相邻两项的差总等于同一个常数&#xff0c;那么这个数列就称为 等差数列 。 如果可以重新排列数组形成等差数列&#xff0c;请返回 true &#xff1b;否则&#xff0c;返回 false…...

Vulnhub靶机——AI-WEB-1

目录 一、实验环境 1.1 攻击机Kali 1.2 靶机下载 二、站点信息收集 2.1 IP扫描 2.2 端口扫描 2.3 目录扫描 三、漏洞利用 3.1 SQL注入 3.2 文件上传 四、权限提升 4.1 nc反弹连接 4.2 切换用户 一、实验环境 1.1 攻击机Kali 在虚拟机中安装Kali系统并作为攻击机 1.2 靶机下载 (…...

无人系统:未来科技的智能化代表

无人系统&#xff08;Unmanned Systems&#xff09;是指在不依赖人类直接干预的情况下&#xff0c;通过自主或远程控制方式完成任务的系统。随着科技的不断进步&#xff0c;特别是在人工智能、机器人学、传感技术、通信技术等领域的突破&#xff0c;无人系统在各行各业中得到了…...

在Docker中部署DataKit最佳实践

本文主要介绍如何在 Docker 中安装 DataKit。 配置和启动 DataKit 容器 登陆观测云平台&#xff0c;点击「集成」 -「DataKit」 - 「Docker」&#xff0c;然后拷贝第二步的启动命令&#xff0c;启动参数按实际情况配置。 拷贝启动命令&#xff1a; sudo docker run \--hostn…...

进程的状态 ─── linux第11课

目录 ​编辑 补充知识: 1.并行和并发 分时操作系统&#xff08;Time-Sharing Systems&#xff09; 实时操作系统&#xff08;Real-Time Systems&#xff09; 进程的状态(操作系统层面) ​编辑 运行状态 阻塞状态 状态总结: 挂起状态 linux下的进程状态 补充知识: …...

MySQL数据库基本概念

目录 什么是数据库 从软件角度出发 从网络角度出发 MySQL数据库的client端和sever端进程 mysql的client端进程连接sever端进程 mysql配置文件 MySql存储引擎 MySQL的sql语句的分类 数据库 库的操作 创建数据库 不同校验规则对查询的数据的影响 不区分大小写 区…...

什么是 jQuery

一、jQuery 基础入门 &#xff08;一&#xff09;什么是 jQuery jQuery 本质上是一个快速、小巧且功能丰富的 JavaScript 库。它将 JavaScript 中常用的功能代码进行了封装&#xff0c;为开发者提供了一套简洁、高效的 API&#xff0c;涵盖了 HTML 文档遍历与操作、事件处理、…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...