Python自动化测试框架:Unittest 断言

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

断言是编程中常用的一种验证方法,也是测试代码中最重要的部分,用于验证某个条件是否为真,验证测试结果与预期结果是否一致。

unittest 提供了方便的断言方法,用于验证测试结果是否符合预期,若验证失败,则会抛出 AssertionError 异常,并输出指定的错误信息。本文将介绍 unittest 中常用的断言方法以及使用场景。

断言的类型

在 unittest 中,常用的断言方法可以分为以下5类:相等断言、包含断言、布尔断言、类型断言、异常断言。

1、相等断言

相等断言用于验证两个值是否相等。

  • assertEqual(a, b, msg=None):验证 a 和 b 是否相等。

  • assertNotEqual(a, b, msg=None):验证 a 和 b 是否不相等。

代码实例:

import unittest
class TestEqual(unittest.TestCase):def test_equal(self):self.assertEqual(1 + 2, 3)

在上述代码中,test_equal 方法使用 assertEqual 方法验证 1 + 2 是否等于 3。

2、包含断言

包含断言用于验证某个值是否包含在另一个值中。

  • assertIn(a, b, msg=None):验证 a 是否包含在 b 中。

  • assertNotIn(a, b, msg=None):验证 a 是否不包含在 b 中。

代码实例:

import unittest
class TestIn(unittest.TestCase):def test_in(self):self.assertIn('e', 'hello')

在上述代码中,test_in 方法使用 assertIn 方法验证字母 'e' 是否包含在字符串 'hello' 中。

3、布尔断言

布尔断言用于验证某个值是否为真或假。

  • assertTrue(x, msg=None):验证 x 是否为真。

  • assertFalse(x, msg=None):验证 x 是否为假。

代码实例:

import unittest
class TestBoolean(unittest.TestCase):
def test_boolean(self):self.assertTrue(1 + 1 == 2)

在上述代码中,`test_boolean` 方法使用 `assertTrue` 方法验证 `1 + 1 == 2` 是否为真。

4、类型断言

类型断言用于验证某个值的类型是否符合预期。

  •  assertIsInstance(a, b, msg=None)`:验证 `a` 是否是 `b` 类型的实例。

  • assertNotIsInstance(a, b, msg=None)`:验证 `a` 是否不是 `b` 类型的实例

代码实例:

import unittest
class TestType(unittest.TestCase):def test_type(self):self.assertIsInstance('hello', str)

上述代码中,test_type 方法使用 assertIsInstance 方法验证字符串 'hello' 是否是字符串类型。如果验证失败,则会抛出 AssertionError 异常,并输出指定的错误信息。

5、异常断言

异常断言用于验证某个操作是否会抛出异常。

  • assertRaises(exc, callable, *args, **kwds):

    验证 callable(*args, **kwds) 是否会抛出 exc 类型的异常。

代码实例:

import unittest
class TestException(unittest.TestCase):def test_exception(self):self.assertRaises(ZeroDivisionError, lambda: 1 / 0)

上述代码中,test_exception 方法使用 assertRaises 方法验证 lambda 函数 lambda: 1 / 0 是否会抛出 ZeroDivisionError 异常。

注意:在使用断言方法时,可以通过 msg 参数来指定断言失败时的错误信息,以便于定位问题。

代码实例:

import unittest
class TestEqual(unittest.TestCase):def test_equal(self):self.assertEqual(1 + 1, 3, '1 + 1 should equal to 3')

上述代码中,使用 msg 参数来指定错误信息 '1 + 1 should equal to 3'。如果验证失败,则会输出这个错误信息。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

spring-ai-alibaba 学习(十八)——graph进阶

内容概述 前一篇(spring-ai-alibaba 1.0.0.2 学习(十七)——初识graph-CSDN博客)初步介绍了graph: 概念:图、边、节点、状态等,及其核心类和衍生类 使用流程: 1)定义…

音视频学习(四十七):模数转换

模数转换(Analog-to-Digital Conversion,简称ADC)是将连续的模拟信号转换为离散的数字信号的过程,是现代电子系统中的核心技术之一。模数转换广泛应用于通信、信号处理、传感器数据采集、音频处理、图像处理等领域。 基本原理 模数…

8.高斯混合模型

高斯混合模型,简称GMM,对数据可以进行聚类或拟合,多用于传统语音识别。他会将每个数据看做多个高斯分布混合生成的。对于无标签的数据进行聚类,一般采用高斯混合模型处理。算法过程 1.首先进行初始猜测,假设有n个簇&am…

Calcite自定义扩展SQL案例详细流程篇

文章目录前言本章节源码一、基于 Calcite 实现一个自定义 SQL 解析器1.1、认识Calcite解析器二、实战案例2.1、快速构建一个可扩展sql语法的模板工程(当前暂无自定义扩展sql示例)步骤1:拉取calcite源码,复制codegen代码步骤2&…

【生活篇】Ubuntu22.04安装网易云客户端

前文啰嗦,直接跳转 命令行汇总 网易云linux版早已停止维护,自己一直在使用web版本,今天想下载个音乐,结果需要客户端。。。 安装命令很简单: wget https://d1.music.126.net/dmusic/netease-cloud-music_1.2.1_amd64…

FT8441S/FT8441A 5V非隔离方案电路原理图(型号解析及管脚定义)

在当今电子设备日益普及的背景下,高效、稳定且低成本的电源解决方案成为了众多工程师的追求目标。Fremont Micro Devices 推出的 FT8441S 和 FT8441A 正是这样两款满足需求的芯片,它们凭借高精度恒压输出、快速启动以及完善的保护功能,成为了…

Python 面向对象编程核心知识点深度解析

面向对象编程(OOP)是 Python 中最重要的编程范式之一,它将数据和操作数据的方法封装在一起,提高了代码的复用性和可维护性。本文将结合实际代码示例,详细讲解 Python 面向对象编程的核心概念和常用技巧。一、类与对象的…

Java学习第一百部分——Kafka

目录 一、前言提要 二、核心价值 三、核心架构 四、基本用途 五、优势总结 六、相关技术 七、详细用途 八、高级用法 九、最佳实践 十、总结定位 一、前言提要 Apache Kafka 是一个强大的开源分布式流处理平台,专为处理高吞吐量、低延迟的实时数据流而设计…

[spring-cloud: 负载均衡]-源码分析

获取服务列表 ServiceInstanceListSupplier ServiceInstanceListSupplier 接口是一个提供 ServiceInstance 列表的供应者&#xff0c;返回一个响应式流 Flux<List<ServiceInstance>>&#xff0c;用于服务发现。 public interface ServiceInstanceListSupplier e…

Oracle 在线重定义

Oracle 在线重定义&#xff08;Online Redefinition&#xff09; 是一种功能&#xff0c;通过DBMS_REDEFINITION 包提供&#xff0c;允许DBA在不需要停止或显著影响数据库正常操作的情况下&#xff0c;对数据库表进行结构化修改。可以实现的功能将表移动到其它表空间增加、修改…

Web 开发 12

1 网址里的 “搜索请求” 结构 这张图是在教你怎么看懂 网址里的 “搜索请求” 结构&#xff0c;特别基础但超重要&#xff0c;对你学前端帮别人做搜索功能超有用&#xff0c;用大白话拆成 3 步讲&#xff1a; 1. 先看「协议&#xff08;Protocol&#xff09;」 HTTPS 就是浏…

网络安全 | 如何构建一个有效的企业安全响应团队

网络安全 | 如何构建一个有效的企业安全响应团队 一、前言 二、团队组建的基础要素 2.1 人员选拔 2.2 角色定位 三、团队应具备的核心能力 3.1 技术专长 3.2 应急处置能力 3.3 沟通协作能力 四、团队的运作机制 4.1 威胁监测与预警流程 4.2 事件响应流程 4.3 事后复盘与改进机制…

HTTP、WebSocket、TCP、Kafka等通讯渠道对比详解

在当今互联的数字世界中&#xff0c;通信渠道是系统、应用程序和设备之间数据交换的支柱。从传统的HTTP和TCP协议到专为特定场景设计的Kafka和MQTT等平台&#xff0c;这些通信方式满足了从实时消息传递到大规模数据流处理的多样化需求。本文将深入探讨主要的通信协议和平台。一…

臭氧、颗粒物和雾霾天气过程的大气污染物计算 CAMx模型

随着我国经济快速发展&#xff0c;我国面临着日益严重的大气污染问题。大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果&#xff0c;同时气象因素是控制大气污染的关键自然因素。大气污染问题既是局部、当地的&#xff0c;也是区域的&#xff0c;甚至是全球…

数据结构(13)堆

目录 1、堆的概念与结构 2、堆的实现 2.1 向上调整算法&#xff08;堆的插入&#xff09; 2.2 向下调整算法&#xff08;堆的删除&#xff09; 2.3 完整代码 3、堆的应用 3.1 堆排序 3.2 Top-K问题 1、堆的概念与结构 堆是一种特殊的二叉树&#xff0c;根结点最大的堆称…

C++模板知识点3『std::initializer_list初始化时逗号表达式的执行顺序』

std::initializer_list初始化时逗号表达式的执行顺序 在使用Qt Creator4.12.2&#xff0c;Qt5.12.9 MinGW开发的过程中发现了一个奇怪的现象&#xff0c;std::initializer_list<int>在初始化构造时的执行顺序反了&#xff0c;经过一番测试发现&#xff0c;其执行顺序可正…

【Unity3D】Shader圆形弧度裁剪

片元着色器&#xff1a; float3 _Center float3(0, 0, 0); float3 modelPos i.modelPos;// float angle atan2(modelPos.y - _Center.y, modelPos.x - _Center.x); // 计算角度&#xff0c;范围-π到π float angle atan2(modelPos.y - _Center.y, modelPos.z - _Center.z)…

curl发送文件bodyParser无法获取请求体的问题分析

问题及现象 开发过程使用curlPUT方式发送少量数据, 后端使用NodeJSexpress框架bodyParser,但测试发现无法获取到请求体内容,现象表现为req.body 为空对象 {} 代码如下: const bodyParser require(body-parser); router.use(/api/1, bodyParser.raw({limit: 10mb, type: */*}))…

Vue3 学习教程,从入门到精通,Vue 3 内置属性语法知识点及案例代码(25)

Vue 3 内置属性语法知识点及案例代码 Vue 3 提供了丰富的内置属性&#xff0c;帮助开发者高效地构建用户界面。以下将详细介绍 Vue 3 的主要内置属性&#xff0c;并结合详细的案例代码进行说明。每个案例代码都包含详细的注释&#xff0c;帮助初学者更好地理解其用法。1. data …

机器学习基石:深入解析线性回归

线性回归是机器学习中最基础、最核心的算法之一&#xff0c;它为我们理解更复杂的模型奠定了基础。本文将带你全面解析线性回归的方方面面。1. 什么是回归&#xff1f; 回归分析用于预测连续型数值。它研究自变量&#xff08;特征&#xff09;与因变量&#xff08;目标&#xf…