Python 测试框架 Pytest 入门

简介

pytest 是一个功能强大而易于使用的 Python 测试框架。它提供了简单的语法和灵活的功能,用于编写和组织测试代码。

1、简单易用:pytest 的语法简洁明了,使得编写测试用例更加直观和易于理解。它使用 assert 语句来验证预期结果,让测试代码更加简洁易读。

2、自动发现测试:pytest 能够自动发现并执行测试文件和测试函数。它遵循命名规则(以 “test_” 开头的文件和函数)来查找测试用例,无需手动指定。

3、丰富的断言支持:pytest 提供了丰富的断言函数,用于比较、验证预期结果和实际结果是否一致。这使得编写断言更加简单和直观。

4、夹具 (fixture):夹具是 pytest 的一个强大功能,用于在测试用例之前和之后执行一些准备和清理操作。夹具可以帮助创建模拟对象、设置测试环境、共享资源等。

5、参数化测试:pytest 支持参数化测试,允许使用不同的输入参数运行同一个测试用例。这可以大大减少编写重复测试代码的工作量。

6、插件系统:pytest 提供了丰富的插件生态系统,可以扩展其功能。可以使用插件来增强测试报告、生成覆盖率报告、集成其他测试工具等。

7、与其他测试框架的兼容性:pytest 可以与其他流行的测试框架(例如 unittest)兼容,因此可以逐步迁移现有的测试代码到 pytest。

pytest 安装

安装 pytest首先,确保已经安装了 Python,并使用 pip 包管理器安装 pytest。
打开终端并输入以下命令:

pip install pytest

验证安装结果:

pytest --version

同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接【点击文末小卡片免费领取资料文档】

软件测试视频教程观看处:

2024年Python自动化测试全套保姆级教程,70个项目实战,3天练完,永久白嫖...

pytest执行

步骤 1:

创建测试文件在项目文件夹中,创建一个以 “test_” 开头的 Python 文件,注意:测试文件名要符合test_.py或_test.py格式(例如 “test_calculator.py”)

步骤 2:

编写测试用例在测试文件中,可以定义一个或多个测试函数,每个函数对应一个测试用例。

# test_calculator.py
 
def test_addition():
    assert 2 + 2 == 4
 
def test_subtraction():
    assert 5 - 3 == 2
 
def test_multiplication():
    assert 3 * 4 == 12
 
def test_division():
    assert 10 / 2 == 5

在每个测试函数中,使用关键字 assert 来判断预期结果与实际结果是否一致。如果断言失败,pytest 将显示错误信息,并将测试标记为失败。

步骤 3:

运行测试在终端中,切换到项目文件夹,并运行以下命令来执行测试:

pytest

pytest 将自动发现并运行测试文件。将看到一份测试结果报告,其中包含每个测试用例的状态(通过、失败或跳过)以及详细的错误信息(如果有的话)。

步骤 4:

使用命令行选项pytest 提供了许多命令行选项,以便可以根据需要自定义测试运行。以下是一些常用的选项:

运行特定目录下的测试文件:

pytest path/to/tests

运行特定测试文件中的某个测试函数:

pytest path/to/tests/test_module.py::test_function

显示详细的打印输出:

pytest -s

生成 JUnit XML 报告:

pytest --junitxml=path/to/report.xml

以上只是 pytest 的一些基本用法。pytest 还具有更高级的功能,例如参数化测试、夹具 (fixture)、测试覆盖率等等。之后会进一步分享,点个赞给小编更多动力。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot内嵌的Tomcat启动过程以及请求

1.springboot内嵌的tomcat的pom坐标 启动后可以看到tomcat版本为9.0.46 2.springboot 内嵌tomcat启动流程 点击进入SpringApplication.run()方法里面 看这次tomcat启动相关的核心代码refreshContext(context);刷新上下文方法 public ConfigurableApplicationContext run(Stri…

银行卡号识别

导入库 from typing import Any, Union, Sequencefrom cv2.mat_wrapper import Mat from imutils import contours import numpy as np import argparse import imutils import cv2 import myutils设置参数 # 设置参数 from numpy import dtype, ndarray, genericap argpars…

“巴渝工匠杯”2022年重庆市职业院校技能大赛(高职组)云计算样题

“巴渝工匠杯”2022年重庆市职业院校技能大赛(高职组)云计算样题 需要软件包环境可私信博主 【赛程名称】云计算赛项第一场次-私有云 某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授…

Visual Studio 2022进行文件差异比较

前言 Visual Studio 2022在版本17.7.4中发布在解决方案资源管理器中比较文件的功能,通过使用此功能,可以轻松地查看两个文件之间的差异,包括添加、删除和修改的代码行。可以逐行查看差异,并根据需要手动调整和编辑文件内容以进行…

易图讯便携式三维电子沙盘实战应用系统

便携式三维电子沙盘采用军工加固三防高性能笔记本,具有IP65级防尘防水防摔性能,以大数据、云计算、虚拟现实、物联网、AI等先进技术为支撑,支持高清卫星影像、DEM高程数据、矢量数据、三维模型、倾斜摄像、BIM、点云、城市白模、等高线、标高…

数据结构学习 jz56数组中数字出现的次数

关键词:位运算 异或性质 虽然有两道题,但是其实应该分成三个级别的题目。 题目一: 一个整型数组 sockets 里除 一个 数字之外,其他数字都出现了两次。 思路:异或的性质 复杂度计算: 时间复杂度O(n) 空…

在Go语言中处理HTTP请求中的Cookie

在Web开发中,Cookie是一种常用的技术,用于在客户端存储数据,并在随后的请求中发送回服务器。Go语言的标准库提供了强大的支持来处理HTTP请求中的Cookie。 首先,让我们了解如何在Go语言中设置Cookie。以下是一个简单的示例&#x…

three.js场景设计器-小地图的视角参考功能

three.js实现场景方向的左上角小地图 思路 1&#xff1a;创建单独场景 2.添加辅助线 3.添加坐标轴的XYZ文字-使用sprite实现 4.旋转主视图时同步相机位置到小地图。 <template> <div ref"miniMapContainer" class"mini-map"></div>…

Apache Commons Email在邮件发送中的应用

第1章&#xff1a;简介 大家好&#xff0c;我是小黑&#xff0c;今天咱们聊聊Apache Commons Email这个库&#xff0c;它在发送邮件方面可谓是小而美的利器。Apache Commons Email基于JavaMail API&#xff0c;但它提供了更简洁、更易用的接口&#xff0c;让咱们在处理电子邮件…

如果PostgreSQL有两层nginx代理,会发生什么事?

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 1. 前言 PostgreSQL默认只能本机连接&#xff0c;若要在别的客户端远程连接pgsql&#xff0c;则需要修改配置文件pg_hba.conf&a…

CommonJS 和 ES6 Module:一场模块规范的对决(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

QML —— SwipeView、PageIndicator组合示例(附完整源码)

示例效果 介绍 SwipeView提供了一个基于滑动的导航模型,由一组页面组成。一次只能看到一个页面。用户可以通过横向滑动在页面之间导航。请注意,SwipeView本身是完全不可见的。建议将其与PageIndicator结合使用,以向用户提供有多个页面的视觉线索。 PageIndicator用于指示包含…

UG装配-沿线运动

如果希望图中圆柱销沿着槽运动&#xff0c;直接约束面是困难的&#xff0c;我们可以画出圆弧的中心线和圆柱销的中心点&#xff0c;约束点在线上&#xff0c;进行移动 需要注意的是&#xff0c;我们在零件中画点和线的时候&#xff0c;在装配体默认加载模型引用集的时候是无法显…

生活中的物理3——神奇陷阱(随机倒下的抽屉柜门)

1实验 材料&#xff1a;大自然&#xff08;风&#xff09;、抽屉门松掉的抽屉 实验 1、找一个大风的日子&#xff0c;打开窗户&#xff08;不要找下雨天&#xff0c;不然你会被你亲爱的嫲嫲KO&#xff09; 2、让风在抽屉面前刮过 3、你发现了什么&#xff1f;&#xff1f;&…

南某人:从工厂到品牌的华丽转身!

南某人&#xff0c;这个名字在中国的市场上已经响当当&#xff0c;但你知道吗&#xff1f;这个品牌其实并没有自己的工厂和门店。那么&#xff0c;他们是如何做到年收入高达40亿的呢&#xff1f; 起初&#xff0c;南某人和许多中国品牌一样&#xff0c;从生产保暖内衣起家。然…

傅里叶级数、傅里叶变换、小波变换、离散余弦变换的理解

目录 1. 傅里叶级数2.傅里叶变换 1. 傅里叶级数 功能&#xff1a;能把任意周期性函数展开成一系列正弦、余弦函数的和。 公式&#xff1a; f ( x ) a 0 2 ∑ n 1 ∞ ( a n cos ⁡ ( 2 π n x T ) b n sin ⁡ ( 2 π n x T ) ) 傅里叶系数 a n 2 T ∫ x 0 x 0 T f ( x )…

机器学习(三) -- 特征工程(1)

系列文章目录 机器学习&#xff08;一&#xff09; -- 概述 机器学习&#xff08;二&#xff09; -- 数据预处理&#xff08;1-3&#xff09; 机器学习&#xff08;三&#xff09; -- 特征工程&#xff08;1-2&#xff09; 未完待续…… 目录 系列文章目录 前言 一、特征…

nginx 一、安装与conf浅析

文章目录 一、安装nginxdocker方式安装linux方式安装Ubuntu 或 Debian 系统&#xff1a;CentOS 或 RHEL 系统&#xff1a; macOS 系统&#xff08;使用 Homebrew&#xff09;&#xff1a;Windows 系统&#xff1a; 二、nginx.conf浅析 Nginx&#xff08;发音为“engine-x”&…

服务器CentOs8 安装RocketMQ 4.9.4

前置条件 安装好java环境 下载、上传、解压 下载二进制包 传送门 上传到服务器&#xff0c;这里上传到了/usr/local目录下 解压&#xff1a; unzip rocketmq-all-4.9.4-bin-release.zip移动到新的文件夹 mv /rocketmq-all-4.9.4-bin-release /rocketmq修改配置 修改conf下…

第 378 场 LeetCode 周赛题解

A 检查按位或是否存在尾随零 枚举&#xff1a;枚举两个元素的组合即可 class Solution { public:bool hasTrailingZeros(vector<int> &nums) {int n nums.size();for (int i 0; i < n; i)for (int j 0; j < i; j)if ((nums[i] | nums[j]) % 2 0)return tru…