3、pytest实现参数化

pytest 中,参数化(parametrization)是一种强大的功能,可以让你用不同的输入数据重复执行同一个测试函数。这种功能非常有用,可以帮助你显著减少重复代码并提高测试覆盖率。

参数化的主要作用是:

  1. 测试多种输入数据:确保函数对各种输入表现正确。
  2. 减少重复代码:一个测试函数可以用多种不同的输入进行测试,而不需要多次编写。
  3. 提高测试覆盖率:通过不同的输入组合,能够更全面地测试功能。

实现参数化的基本方法

pytest 提供了@pytest.mark.parametrize 装饰器来实现测试参数化。下面是如何使用它的一个示例:

import pytest# 假设有一个简单的函数,用于计算两个数字的和
def add(a, b):return a + b# 使用 @pytest.mark.parametrize 进行参数化测试
@pytest.mark.parametrize("a, b, expected", [(1, 2, 3),        # 测试数据1(10, 20, 30),     # 测试数据2(-1, 1, 0),       # 测试数据3(0, 0, 0)         # 测试数据4
])
def test_add(a, b, expected):assert add(a, b) == expected

参数化装饰器解析

  • @pytest.mark.parametrize 接受两个参数:
    • argnames: 参数名列表(字符串)。可以是逗号分隔的字符串如 "a, b, expected" 或列表 ["a", "b", "expected"]
    • argvalues: 参数值列表(元组)。每个元组对应一次测试调用的数据组合。

在上述示例中,@pytest.mark.parametrize 装饰器会让 test_add 运行四次,每次传入一组不同的 (a, b, expected) 值。

复杂参数化示例

参数化不仅仅适用于基本数据类型,还可以与复杂的数据结构结合使用,如字典、列表等。

@pytest.mark.parametrize("input_data, expected", [({"a": 1, "b": 2}, 3),({"a": 10, "b": 20}, 30),
])
def test_add_dict(input_data, expected):assert add(input_data["a"], input_data["b"]) == expected

参数化的优势

  1. 更简单的测试管理:通过参数化减少测试代码行数,更易于维护。
  2. 可读性:参数化清晰展示输入和期望结果列表,方便理解测试意图。
  3. 高效测试:可以一次性运行多个输入组合,提高测试效率。

通过使用 pytest 的参数化功能,你可以简化你的测试代码并确保你的函数在不同输入下能够正确执行。

下篇文章入口:
4、pytest常用插件-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39963.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos 7 部署FTP 服务用shell 脚本搭建

#!/bin/bash# 检查是否以root身份运行脚本 if [ "$EUID" -ne 0 ]; thenecho "请以root身份运行此脚本。"exit 1 fi# 安装vsftpd yum install -y vsftpd# 启动vsftpd服务并设置开机自启 systemctl start vsftpd systemctl enable vsftpd# 配置防火墙以允许F…

基于Spring Boot的个性化商铺系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

AI(DeepSeek、ChatGPT)、Python、ArcGIS Pro多技术融合下的空间数据分析、建模与科研绘图及论文写作

人工智能(AI)与ArcGIS Pro的结合,为空间数据处理和分析开辟了前所未有的创新路径。AI通过强大的数据挖掘、深度学习及自动化能力,可高效处理海量、多源、异构的空间数据,极大提升了分析效率与决策支持能力。而ArcGIS P…

2025最新3个wordpress好用的主题

红色大气的wordpress企业主题,适合服务行业的公司搭建企业官方网站使用。是一款专为中小企业和个人开发者设计的WordPress主题,旨在提供专业的网站构建解决方案。 通过此WordPress主题,用户可以轻松创建和维护一个专业的企业网站&#xff0c…

Spring AI Alibaba AudioModel使用

一、AudioModel简介 1、AudioModel 当前,Spring AI Alibaba 支持以下两种通义语音模型的适配,分别是: 文本生成语音 SpeechModel,对应于 OpenAI 的 Text-To-Speech (TTS) API录音文件生成文字 DashScopeAudioTranscriptionMode…

时隔多年,终于给它换了皮肤,并正式起了名字

时隔多年,终于更新了直播推流软件UI,并正式命名为FlashEncoder。软件仍使用MFC框架,重绘了所有用到的控件,可以有效保证软件性能,也便于后续进一步优化。 下载地址:https://download.csdn.net/download/Xi…

Python备赛笔记2

1.区间求和 题目描述 给定a1……an一共N个整数,有M次查询,每次需要查询区间【L,R】的和。 输入描述: 第一行包含两个数:N,M 第二行输入N个整数 接下来的M行,每行有两个整数,L R,中间用空格隔开&…

各类神经网络学习:(四)RNN 循环神经网络(下集),pytorch 版的 RNN 代码编写

上一篇下一篇RNN(中集)待编写 代码详解 pytorch 官网主要有两个可调用的模块,分别是 nn.RNNCell 和 nn.RNN ,下面会进行详细讲解。 RNN 的同步多对多、多对一、一对多等等结构都是由这两个模块实现的,只需要将对输入…

python每日十题(10)

在Python语言中,源文件的扩展名(后缀名)一般使用.py。 保留字,也称关键字,是指被编程语言内部定义并保留使用的标识符。Python 3.x有35个关键字,分别为:and,as,assert&am…

Harbor镜像仓库迁移与高可用集群搭建HTTPS实现实战指南

实验环境 Ubuntu22.04操作系统 registry节点 10.0.0.91 master节点 10.0.0.92 backup节点 10.0.0.93 在企业信息化建设的不同演进阶段,私有镜像仓库的选型策略存在显著差异。近期主导完成某企业级容器镜像仓库升级项目,成功实现Docker Registry至Ha…

【Python】pillow库学习笔记3-Image.mode

提取颜色通道时,偶然换了个图片,结果在在运行代码时一直报错: from PIL import Image im Image.open(city2.png) r,g,b im.split() om Image.merge("RGB", (b,g,r)) om.save(cBGR.jpg)Traceback (most recent call last): File…

PDF打开密码教程:让您的文档更安全

在数字化办公时代,PDF 文件常包含敏感信息,这时候,给PDF文件设置打开密码就成了一种有效的保护措施。这样,只有输入正确密码的人才能查看内容,大大提高了文件的安全性。如果您对这方面不清楚,就来看看小编分…

SOFAActs 介绍-01-白盒测试框架 overview

前言 大家好,我是老马。 sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFABoot-00-sofaboot 概览 SOFABoot-01-蚂蚁金服开源的 s…

Snipaste软件出现测量像素不准的问题

最近写一些前端布局的时候发现使用snipaste测量dom元素大小的时候出现和实际不符的情况。我平时写代码的时候是笔记本和一个显示屏,在笔记本上测量的时候发现总是和实际大小不符合,而在显示屏上测量的时候却并无差错,真是奇了怪了。 后来发现…

笔试专题(三)

文章目录 字符串中找出连续最长的数字串题解代码 拼三角题解代码 字符串中找出连续最长的数字串 题目链接 题解 1. 考察双指针 模拟 2. 算法思路:给定一个i 0,让i,如果遇到数字字符就创建一个变量j i,让j去遍历&#xff0c…

基于vue.js开发的家庭装修管理系统开发与设计(源码+lw+部署文档+讲解),源码可白嫖!

摘要 本家庭装修管理系统采用B/S架构,数据库是MySQL,网站的搭建与开发采用了先进的Node.js语言进行编写,使用了VUE框架。该系统从两个对象:由管理员和用户来对系统进行设计构建。用户的功能包括:注册、登录、浏览首页…

NAT网络地址转换与内网穿透

一、背景 前一篇文章提到PCDN, 也就是p2p技术CDN技术进行融合。 P2P技术有利于文件的快速分发。我们的CDN在控制节点分发数据的时候,向边缘节点传输数据,也是一种分发,还有各边缘节点强制同步数据等等,如果结合P2P技术…

【开源宝藏】30天学会CSS - DAY9 第九课 牛顿摆动量守恒动画

以下是一份逐步拆解教程,带你从零理解并复刻这个牛顿摆(Pendulum of Newton)动画效果,这是一个经典的物理演示模型,现在通过纯 HTML 和 CSS 实现出来,视觉效果炫酷、结构简洁。 🎯 动画效果说明…

Chat2DB:一款强大的数据库管理工具,AI助力高效查询与分析

AI技术可谓是日新月异,其已经融入到社会的方方面面,今天就给大家分享一款数据库SQL客户端工具:Chat2DB。 1 简介 Chat2DB是一款开源的数据库管理工具,集成了AI 智能辅助功能,支持自然语言生成 SQL,帮助开发…

安全上网沙箱:多方面解决政企私的上网问题

在数字化的浪潮中,网络已成为我们工作与生活不可或缺的一部分。然而,网络的便捷也伴随着诸多安全隐患,尤其是对于企业、个人以及政企机构而言,安全上外网成为了至关重要的课题。 隔离保护:构建安全堡垒 沙箱技术在内网…