Pytest精通指南(02)对比Unittest的差异


文章目录

      • 前言
      • 用例编写规则不同
      • 用例前置与后置条件不同
      • 断言功能不同
      • 测试报告
      • 失败重跑机制
      • 参数化
      • 用例分类执行
      • Unittest 前后置示例
      • Pytest 前后置示例
      • 总结


在这里插入图片描述

前言

在Python中,unittest和pytest是两个主流的测试框架;
它们都旨在支持自动化测试、使用断言验证代码的正确性,并提供丰富的测试功能。
尽管它们的目标相同,但在用例编写规则、前置和后置方法、参数化、断言功能、用例执行和报告生成等方面存在显著差异。
本文将深入探讨这些差异,并突出pytest相对于unittest的其他优点。

用例编写规则不同

在这里插入图片描述

用例前置与后置条件不同

在这里插入图片描述

断言功能不同

在这里插入图片描述

测试报告

在这里插入图片描述

失败重跑机制

在这里插入图片描述

参数化

在这里插入图片描述

用例分类执行

在这里插入图片描述

Unittest 前后置示例

unittest前后置代码

import unittestclass TestFixtures01(unittest.TestCase):# 所有用例执行前执行def setUp(self) -> None:print("setUp开始")def tearDown(self) -> None:print("tearDown结束")# 每条用例执行前执行@classmethoddef setUpClass(cls) -> None:print("setUpClass开始")@classmethoddef tearDownClass(cls) -> None:print("tearDownClass结束")# 测试用例def test_001(self):print("测试用例001")class TestFixtures02(unittest.TestCase):def test_002(self):print("测试类2")# 每个模块执行前执行
def setUpModule():"""在所有测试类在调用之前会被执行一次,函数名是固定写法,会被unittest框架自动识别"""print('集成测试 >>>>>>>>>>>>>>开始')
def tearDownModule():print("集成测试 >>>>>>>>>>>>>>结束")if __name__ == '__main__':unittest.main()

unittest前后置结果

在这里插入图片描述

从结果上得知, 三个方法的逻辑优先级: setUp()&tearDown() < setUpClass()&tearDownClass() < setUpModule()&tearDownModule()

Pytest 前后置示例

pytest相比unittest来说无论是前后置还是插件等都灵活了很多,还可以自定义fixture。

用例运行前后置级别如下:

  • 模块级:全局的,整个模块开只运行一次,优先于测试用例。
  • 类级别:定义在类里面,只针对此类生效。类似unittest的cls装饰器
  • 函数级:只对函数生效,类下面的函数不生效。
  • 方法级:定义在类里面,每个用例都执行一次
def setup_module():print('\n整个模块 前 只运行一次')def teardown_module():print('\n整个模块 后 只运行一次')def setup_function():print('\n不在类中的函数,每个用例 前 只运行一次')def teardown_function():print('\n不在类中的函数,每个用例 后 只运行一次')def test_ab():b = 2assert b < 3def test_aba():b = 2assert b < 3class Test_api():def setup_class(self):print('\n此类用例 前 只执行一次')def teardown_class(self):print('\n此类用例 后 只执行一次')def setup_method(self):print('\n此类每个用例 前 只执行一次')def teardown_method(self):print('\n此类每个用例 后 执行一次')def test_aa(self):a = 1print('\n我是用例:a')       # pytest -s 显示打印内容assert a > 0def test_b(self):b = 2assert b < 3

pytest前后置运行结果

在这里插入图片描述

总结

  1. 简洁性:pytest的语法更加简洁,使得测试代码更加易读和易写。
  2. 灵活性:pytest提供了更多的灵活性和扩展性,使得测试人员可以根据项目的需求进行定制。
  3. 强大的插件生态系统:pytest拥有一个庞大的插件生态系统,提供了许多额外的功能和工具,如测试覆盖率报告、性能分析等。
  4. 与第三方工具的集成:pytest可以轻松地与许多第三方工具集成,如持续集成/持续部署(CI/CD)系统、代码质量分析工具等。
  5. 最关键的是pytest可以兼容unittest,但是反过来无法兼容。

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

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

相关文章

Go gorm库(详细版)

目录 01. 什么是ORM 02. 环境搭建 03. 连接数据库 高级设置 gorm 的命名策略 创建表 日志显示 04. 模型定义 定义一张表 自动生成表结构 修改表字段大小 字段标签 05. 单表查询 5.1 表结构 5.2 添加单条记录 5.3 批量插入 5.4 单条数据查询 5.5 根据主键查询…

数据库被rmallox勒索病毒加密,如何还原?

近年来&#xff0c;网络安全问题日益严峻&#xff0c;勒索病毒作为其中的一种恶意软件&#xff0c;已成为网络安全领域的一大难题。其中&#xff0c;rmallox勒索病毒以其高度的隐蔽性和破坏性&#xff0c;给不少企业和个人带来了严重损失。本文将从rmallox勒索病毒的特点、传播…

小程序视频怎么保存

新的小程序视频保存方法来了&#xff01;不再需要依赖繁琐的Fiddler&#xff0c;也无需分析数据包。这款工具简单易用&#xff0c;帮助你轻松下载小程序视频&#xff0c;摆脱了繁琐的配置步骤。快来体验这个下载高手&#xff0c;让视频保存变得轻松简便&#xff01; 下载高手我…

Github 2024-04-09 Python开源项目日报 Top10

根据Github Trendings的统计,今日(2024-04-09统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10Vue项目1JavaScript项目1系统设计指南 创建周期:2507 天开发语言:Python协议类型:OtherStar数量:241693 个Fork数量:42010 次…

漫途水产养殖水质智能监测方案,科技助力养殖业高效生产!

随着水产养殖业的蓬勃发展&#xff0c;水质和饲料等多重因素逐渐成为影响其持续健康发展的关键因素。由于传统养殖模式因监控和调节手段不足&#xff0c;往往造成养殖环境的恶化。需要通过智能化养殖&#xff0c;调控养殖环境&#xff0c;实现养殖的精细化管理模式&#xff0c;…

智能网联汽车自动驾驶数据记录系统DSSAD数据元素

目录 第一章 数据元素分级 第二章 数据元素分类 第三章 数据元素基本信息表 表1 车辆及自动驾驶数据记录系统基本信息 表2 车辆状态及动态信息 表3 自动驾驶系统运行信息 表4 行车环境信息 表5 驾驶员操作及状态信息 第一章 数据元素分级 自动驾驶数据记录系统记录的数…

thinkphp6入门(22)-- 如何下载文件

假设在public/uploads文件夹下有一个文件test.xlsx 在前端页面添加下载链接&#xff0c;用户点击该链接即可下载对应的文件。 <a href"xxxxxxx/downloadFile">下载文件</a> 2. 在后端控制器方法中&#xff0c;我们需要获取要下载的文件路径&#xff0…

【赛题】2024年“认证杯”数模网络挑战赛赛题发布

2024年"认证杯"数学建模网络挑战赛——正式开赛&#xff01;&#xff01;&#xff01; 赛题已发布&#xff0c;后续无偿分享各题的解题思路、参考文献、完整论文可运行代码&#xff0c;帮助大家最快时间&#xff0c;选择最适合是自己的赛题。祝大家都能取得一个好成…

实用工具系列-ADB使用方式

作者持续关注 WPS二次开发专题系列&#xff0c;持续为大家带来更多有价值的WPS开发技术细节&#xff0c;如果能够帮助到您&#xff0c;请帮忙来个一键三连&#xff0c;更多问题请联系我&#xff08;WPS二次开发QQ群:250325397&#xff09;&#xff0c;摸鱼吹牛嗨起来&#xff0…

day5 nest商业项目初探·一(java转ts全栈/3R教室)

背景&#xff1a;从头一点点学起太慢了&#xff0c;直接看几个商业项目吧&#xff0c;看看根据Java的经验&#xff0c;自己能看懂多少&#xff0c;然后再系统学的话也会更有针对性。先看3R教室公开的 kuromi 移民机构官方网站吧 【加拿大 | 1.5w】Nextjs&#xff1a;kuromi 移民…

[STM32+HAL]DengFOC移植之闭环位置控制

一、源码来源 DengFOC官方文档 二、HAL库配置 1、开启硬件IIC低速模式 低速更稳定 2、PWM波开启 三、keil填写代码 1、AS5600读取编码器数值 #include "AS5600.h" #include "math.h"float angle_prev0; int full_rotations0; // full rotation trac…

Linux下使用C语言实现线程池---代码及分析

线程池 相关文章 协议 Socket编程 高并发服务器实现 线程池 如果一个客户端建立连接使用创建一个线程用于处理这一个线程, 处理结束的时候把这一个线程删除, 这个时候会导致线程的创建以及销毁会消耗大量的时间 这时候可以一次性创建多个线程, 这几个线程统称线程池, 如果客户…

Mac下用adb命令安装apk到android设备笔记

查询了些资料记录备用。以下是在Mac上使用命令行安装APK文件的步骤&#xff1a; 1. 下载并安装ADB&#xff1a; 如果您的Mac上没有安装ADB&#xff0c;请从官方的Android开发者网站下载Android SDK Platform Tools&#xff1a;Android SDK Platform Tools。将下载的ZIP文件解…

Maven创建项目

目录 1.创建项目 2.从Maven Repository: Search/Browse/Explore (mvnrepository.com)链接&#xff0c;下载API 3.1.0 3.在main文件内创建webapp文件夹&#xff0c;再webapp文件夹内创建WEB-INF文件夹&#xff0c;在WEB-INF文件夹内创建web.xml 4.网络编程 5.打包 6.部署 …

前端服务请求跨域被拦截,Java后端Springboot服务解决办法

跨域问题 跨域前端遇到的问题&#xff1a; Access to XMLHttpRequest at ‘http://www.xxx.xxxx/api/x/d/xc’ from origin ‘http://127.0.0.1:3000’ has been blocked by cors policy: No ‘Access-Contorl-Allow-Origin’ header is present on the requested resource. …

雪亮工程视频联网综合管理/视频智能分析系统建设方案(二)

一、我国雪亮工程当前建设需求 1&#xff09;加强社会治安防控感知网络建设 加强社会治安防控智能感知网络建设&#xff0c;针对城中村、背街小巷、城乡结合部等重点区域建设安装视频监控设备&#xff0c;减少死角和盲区&#xff0c;与已有感知系统结合&#xff0c;形成高低搭…

Transformer模型-decoder解码器,target mask目标掩码的简明介绍

今天介绍transformer模型的decoder解码器&#xff0c;target mask目标掩码 背景 解码器层是对前面文章中提到的子层的包装器。它接受位置嵌入的目标序列&#xff0c;并将它们通过带掩码的多头注意力机制传递。使用掩码是为了防止解码器查看序列中的下一个标记。它迫使模型仅使用…

Unity 中画线

前言&#xff1a; 在Unity项目中&#xff0c;调试和可视化是开发过程中不可或缺的部分。其中&#xff0c;绘制线条是一种常见的手段&#xff0c;可以用于在Scene场景和Game视图中进行调试和展示。本篇博客将为你介绍多种不同的绘制线条方法&#xff0c;帮助你轻松应对各种调试…

新手尝试硬件买单片机还是树莓派?

新手尝试硬件买单片机还是树莓派&#xff1f; 新手的话&#xff0c;先学单片机吧&#xff0c;51&#xff0c;stm32&#xff0c;都可以&#xff0c;很多学习平台给的例子比较多&#xff0c;程序相对都比较简单&#xff0c;更贴近硬件&#xff0c;玩起来比较容易做出小东西&…

SI案例分享--实用的单端口Delta-L测试方法

目录 0 引言 1 单端口Delta-L技术 2 基于单端口Delta-L方法的反射灵敏度分析 3 用充分表征的材料系统验证该方法 4 在单端口法中提取总损耗 5 总结 0 引言 Intel Delta-L方法已被公认为一种常规方法&#xff0c;通过对测试线进行2端口测量来提取层压板材料的Dk和插入损耗…