初识 pytest 及断言使用

章节目录:

    • 一、pytest 相关概述
    • 二、环境搭建
    • 三、使用前提
    • 四、断言
      • 4.1 常用断言
      • 4.2 异常断言
      • 4.3 断言装饰器
    • 五、结束语

一、pytest 相关概述

pytest 是一个基于 Python 编写的测试框架,用于编写和运行各种类型的软件测试。它提供了丰富的功能和灵活的语法,用于组织、执行和报告测试结果。它具有以下优点:

  • 简单易用:pytest 的语法简洁明了,学习曲线相对较低,不需要太多的配置和编写代码就可以开始编写测试用例。
  • 自动化和自动发现:pytest 能够自动发现和收集测试用例,无需手动编写测试套件。它根据约定的命名规则在你的代码中自动找到测试函数或方法。
  • 多样化的断言库:pytest 支持多种断言库,如 assert 语句、unittest 库的断言方法、第三方库如pytest_assert等。这使得编写和阅读断言变得更加直观和灵活。
  • 丰富的插件生态系统:pytest 有一个庞大的插件生态系统,可以扩展它的功能。这些插件可以帮助你进行性能测试、代码覆盖率分析、多线程测试等,使测试过程更加高效和全面。
  • 并行执行测试用例:pytest 支持并行执行测试用例,可以加快测试的速度,提高测试效率。
  • 集成于开发环境:pytest 可以与常见的开发环境集成,如 PyCharm、VSCode 等,提供了便捷的测试运行和调试功能。

二、环境搭建

  • 解释器:python 3.x
  • IDE:pycharm
  • 通过IDE 安装 pytest:

  • 设置默认运行:

三、使用前提

在使用 pytest 编写测试用例时,按照一定的规则可以确保测试用例被正确识别和执行。

  • 文件名test_*.py 文件和 *_test.py。
  • :以 Test 开头,不能包含 __init__(self) 方法。
  • 函数:以 test_ 开头。
  • 所有的包 package 必须要有 __init__.py 文件。

四、断言

在 pytest 中,使用 assert 来定义断言。assert 语句接受一个条件表达式作为参数,如果条件为假,则断言失败,pytest 会将其报告为一条测试失败的消息。

4.1 常用断言

  • assert xx :判断 xx 为真

  • assert not xx :判断 xx 不为真

  • assert a in b :判断 b 包含 a

  • assert a == b :判断 a 等于 b

  • assert a != b :判断 a 不等于 b

  • 代码示例

num = 11
assert num % 2 == 0, "当前值 %s 不是偶数。" % num
# AssertionError: 当前值 11 不是偶数。

4.2 异常断言

可以使用 pytest.raises() 作为上下文管理器,当抛出异常时可以获取到对应的异常实例。

  • 代码示例
import pytestdef test_function_pass():with pytest.raises(ZeroDivisionError) as e:# 捕获到对应异常则通过。i = 3 / 0# PASSEDdef test_function_failed():with pytest.raises(ZeroDivisionError) as e:# 没有捕获到对应异常则失败。i = 3 / 1# Failed: DID NOT RAISE <class 'ZeroDivisionError'>
  • 可以将 match 关键字参数传递给上下文管理器,以测试正则表达式与异常的字符串表示形式是否匹配
import pytestdef test_function():with pytest.raises(ZeroDivisionError, match=".*zero") as e:# 是对应的异常类型 且 异常的 value 和 match 正则匹配上,则通过。i = 3 / 0# PASSED
  • 提示:使用 match 只能断言 value,不能断言 type。

4.3 断言装饰器

@pytest.mark.xfail(raises=Exception)

  • 代码示例
import pytest# 和 raises 指定的异常类相匹配 -> case ignored。
@pytest.mark.xfail(raises=ZeroDivisionError)
def test_function():i = 3 / 0# E       ZeroDivisionError: division by zero
  • pytest.raises() 对于故意测试异常代码的情况,使用可能会更好。
  • @pytest.mark.xfail(raises=Exception) 对于检查未知的错误会更好。

五、结束语


“-------怕什么真理无穷,进一寸有一寸的欢喜。”

微信公众号搜索:饺子泡牛奶

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

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

相关文章

Vue:绘制图例

本文记录使用Vue框架绘制图例的代码片段。 可以嵌入到cesium视图中,也可以直接绘制到自己的原生系统中。 一、绘制图例Vue组件 <div v-for="(color, index) in colors" :key="index" class="legend-item"><div class="color-…

机器学习中的特征工程

1 特征工程概述 特征工程是机器学习中的一个关键步骤&#xff0c;在机器学习领域中占有非常重要的地位&#xff0c;是机器学习中不可或缺的一部分&#xff0c;下图展示了一个常规的机器学习流程&#xff1a; 特征工程涉及从原始数据中提取、选择和转换特征&#xff0c;以改善模…

计算机网络TCP篇②

来源自小林Coding博客&#xff0c;阅读后部分精简笔记 目录 一、TCP 重传、滑动窗口、流量控制、拥塞控制 1.1、重传机制 1.1.1、超时重传 1.1.2、快速重传 1.1.3、SACK 方法 1.1.4、Duplicate SACK 1.2、滑动窗口 1.3、流量控制 1.3.1、操作系统缓冲区与滑动窗口的关…

13、pytest为失败的断言定义自己的解释

官方实例 # content of ocnftest.py from test_foocompare import Foodef pytest_assertrepr_compare(op, left, right):if isinstance(left, Foo) and isinstance(right, Foo) and op "":return["Comparing Foo instances:",f" vals:{left.val} !…

【数据结构第 6 章 ②】- 图的存储结构(详解邻接矩阵)- 用 C 语言实现

目录 一、邻接矩阵表示法 二、AMGraph.h 三、AMGraph.c 四、Test.c 【数据结构第 6 章 ① 】- 图的定义和基本术语-CSDN博客 由于图的结构比较复杂&#xff0c;任意两个顶点之间都可能存在联系&#xff0c;因此无法以数据元素在存储区中的物理位置来表示元素之间的关系&…

Leetcode2477. 到达首都的最少油耗

Every day a Leetcode 题目来源&#xff1a;2477. 到达首都的最少油耗 解法1&#xff1a;贪心 深度优先搜索 题目等价于给出了一棵以节点 0 为根结点的树&#xff0c;并且初始树上的每一个节点上都有一个人&#xff0c;现在所有人都需要通过「车子」向结点 0 移动。 对于…

微软NativeApi-NtQuerySystemInformation

微软有一个比较实用的Native接口&#xff1a;NtQuerySystemInformation&#xff0c;具体可以参考微软msdn官方文档&#xff1a;NtQuerySystemInformation&#xff0c; 是一个系统函数&#xff0c;用于收集特定于所提供的指定种类的系统信息。ProcessHacker等工具使用NtQuerySys…

C/C++,优化算法——双离子推销员问题(Bitonic Travelling Salesman Problem)的计算方法与源代码

1 文本格式 // C program for the above approach #include <bits/stdc.h> using namespace std; // Size of the array a[] const int mxN 1005; // Structure to store the x and // y coordinates of a point struct Coordinates { double x, y; } a[mxN]; //…

luceda ipkiss教程 43:画渐变圆弧型波导

案例分享&#xff1a; from si_fab import all as pdk import ipkiss3.all as i3 from ipcore.properties.restrictions import RestrictTuple from ipkiss.geometry.shapes.modifiers import __ShapePathBase__ import numpy as np from math import atan2class ShapePathTa…

优化 SQL 日志记录的方法

为什么 SQL 日志记录是必不可少的 SQL 日志记录在数据库安全和审计中起着至关重要的作用&#xff0c;它涉及跟踪在数据库上执行的所有 SQL 语句&#xff0c;从而实现审计、故障排除和取证分析。SQL 日志记录可以提供有关数据库如何访问和使用的宝贵见解&#xff0c;使其成为确…

Kubersphere应用【二】Docker安装

一、Docker安装 1.下载Docker安装包 【地址】Index of linux/static/stable/x86_64/ 2.上传至服务器 # 解压文件 tar -xvf docker-20.10.10.tgz# 将docker 目录中的所有文件复制至/usr/bin/目录下 cp docker/* /usr/bin 3.配置docker.service文件 vim /usr/lib/systemd/sy…

MacBook 逆水寒下载安装使用教程,支持最新版本 MacOS 流畅不闪退

最近 MacBook 系统更新到了 MacOS 14.1 很多朋友的逆水寒玩不了了&#xff0c;我尝试了一番可以正常玩了&#xff0c;看图&#xff1a; 其实操作也很简单&#xff0c;我们从头开始&#xff0c;因为 MacOS 系统的更新所以我们也需要更新新版本的 playCover 来适配新的系统&#…

MBD Introduction

介绍 MATLAB是MathWorks公司的商业数学软件&#xff0c;应用于科学计算、可视化以及交互式程序设计等高科技计算环境。Simulink是MATLAB中的一种可视化仿真工具。 Simulink是一个模块图环境&#xff0c;用于多域仿真以及基于模型的设计。它支持系统设计、仿真、自动代码生成以…

Github入门教程之高效搜索和查看需要的项目

对咱们新入门的小白来说&#xff0c;前两天手把手注册 Github 账号的任务已经完成&#xff0c;接下来&#xff0c;学习如何高效搜索和查看自己感兴趣的内容。 下面是之前教程传送门 超详细GitHub注册和登录教程-CSDN博客 一. 搜索 可以在页面左上角「Search or jump to ...」…

了解一下Spring Security吧

目录 1. 什么是Spring Security&#xff1f; 2. 核心概念 2.1 认证&#xff08;Authentication&#xff09; 2.2 授权&#xff08;Authorization&#xff09; 2.3 过滤器链&#xff08;Filter Chain&#xff09; 3. 使用Spring Security保护Web应用 3.1 配置Web安全性 …

Python---继承

1、什么是继承 我们接下来来聊聊Python代码中的“继承”&#xff1a;类是用来描述现实世界中同一组事务的共有特性的抽象模型&#xff0c;但是类也有上下级和范围之分&#xff0c;比如&#xff1a;生物 > 动物 > 哺乳动物 > 灵长型动物 > 人类 > 黄种人 从哲学…

做数据分析为何要学统计学(5)——什么问题适合使用t检验?

t检验&#xff08;Students t test&#xff09;&#xff0c;主要依靠总体正态分布的小样本&#xff08;例如n < 30&#xff09;对总体均值水平进行差异性判断。 t检验要求样本不能超过两组&#xff0c;且每组样本总体服从正态分布&#xff08;对于三组以上样本的&#xff0…

P4 Qt如何添加qss样式表文件和添加图片资源

目录 前言 01 添加图片资源文件 02 添加qss文件 前言 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ &#x1f525; 推荐专栏2: 《Qt基础_ChenPi的博客-CSDN博客》✨✨✨ &#x1f33a;本篇简介 &#xff1a;这一章…

阿里云磁盘在线扩容

我们从阿里云的控制面板中给硬盘扩容后结果发现我们的磁盘空间并没有改变 注意&#xff1a;本次操作是针对CentOS 7的 &#xfeff;#使用df -h并没有发现我们的磁盘空间增加 #使用fdisk -l发现确实还有部分空间 运行df -h命令查看云盘分区大小。 以下示例返回分区&#xf…

response应用及重定向和request转发

请求和转发&#xff1a; response说明一、response文件下载二、response验证码实现1.前置知识&#xff1a;2.具体实现&#xff1a;3.知识总结 三、response重定向四、request转发五、重定向和转发的区别 response说明 response是指HttpServletResponse,该响应有很多的应用&…