Python测试框架pytest介绍用法
1、介绍
pytest是python的一种单元测试框架,同自带的unittest测试框架类似,相比于unittest框架使用起来更简洁、效率更高
pip install -U pytest
特点:
1.非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
2.支持简单的单元测试和复杂的功能测试
3.支持参数化
4.执行测试过程中可以将某些测试跳过,或者对某些预期失败的Case标记成失败
5.支持重复执行失败的Case
6.支持运行由Nose,Unittest编写的测试Case
7.具有很多第三方插件,并且可以自定义扩展
8.方便的和持续集成工具集成
2、入门案例
import pytestdef test_a():print("test_a")return 1 * 0def test_b():print("test_b")return 1 / 0if __name__ == '__main__':pytest.main(["-s"])

3、配置文件
默认规则:
模块名称为 test_*.py 或 *_test.py
类名称为Test开头
配置文件:pytest.ini
[pytest]
addopts = -s # 通常是- 或者 -- 开头内容
testpaths = ./ # 测试模块所在目录
python_files = test_*.py *test.py # 测试模块文件名称规则,多个内容用空格分隔
python_classes = Tedt_* # 测试类名称规则
python_functions = test_* # 测试类函数或者方法的名称规则
4、标记跳过测试
无条件跳过:
@pytest.mark.skip(reason="我想跳过")
def test_b():print("test_b")return 1 / 0@pytest.mark.xfail(raises=ZeroDivisionError)
def test_c():print("test_b")return 1 / 0
有条件跳过:
@pytest.mark.skipif(2>10,reason="条件成立跳过)
def test_c():print("test_c")
5、参数化
对于相似的过程,但数据不一样的时候,可以使用参数化
parameterize(self.argnames, argvalues, ids=None):
- argnames 参数名称 列表或者元组
- argvalues 参数值 列表套元组
- ids 测试id,可省略
例子:
@pytest.mark.parametrize(["a", "b"], [(1, 2), (3, 4)])
def test_a(a, b):print("test_a++++++++++++++")assert a + b < 100
6、夹具(前后固件)
在测试之前和之后执行,用于固定测试环境,及清理回收测试资源
# 方法夹具
def setup_method(self):print("方法用例执行之前,需要的操作:热身")def teardown_method(self):print("方法用例执行之前,需要的而操作:拉伸")# 类夹具
def setup_class(self):passdef teardown_class(self):pass# 函数夹具
def teardown_function():print("函数执行之前:拉伸")def setup_function():print("函数执行之前:热身")# 摸块夹具
def teardown_module():print("函数执行之前:拉伸")def setup_module():print("函数执行之前:热身")
7、插件
生成测试报告
安装:pip install pytest-html
使用:
1、命令行方式:pytest --html=存储路径/report.html
2、配置文件方式:
[pytest]
addopts = -s --html=./report.html
多线程运行:pytest-xdist
控制用例的执行顺序:pytest-ordeing
失败用例重跑:pytest-returnfailures
生成企业级专业版的测试报告:allure-pytest
测试框架本身:pytest
管理基础路径:pytest-base-url
相关文章:
Python测试框架pytest介绍用法
1、介绍 pytest是python的一种单元测试框架,同自带的unittest测试框架类似,相比于unittest框架使用起来更简洁、效率更高 pip install -U pytest 特点: 1.非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考 2.支持简单的单…...
AI对话系统app开源
支持对接gpt,阿里云,腾讯云 具体看截图 后端环境:PHP7.4MySQL5.6 软件:uniapp 废话不多说直接上抗揍云链接: https://mny.lanzout.com/iKFRY1o1zusf 部署教程请看源码内的【使用教程】文档 欢迎各位转载该帖/源码...
SpringBoot+aop实现主从数据库的读写分离
读写分离的作用是为了缓解写库,也就是主库的压力,但一定要基于数据一致性的原则,就是保证主从库之间的数据一定要一致。如果一个方法涉及到写的逻辑,那么该方法里所有的数据库操作都要走主库。 一、环境部署 数据库:…...
胎神游戏集第二期
延续上一期 一、海岛奇胎 #include<bits/stdc.h> #include<windows.h> #include<stdio.h> #include<conio.h> #include<time.h> using namespace std; typedef BOOL (WINAPI *PROCSETCONSOLEFONT)(HANDLE, DWORD); PROCSETCONSOLEFONT SetCons…...
Unicode/ASCII/UTF的关系(模板字面量、模板字符串、占位符)
字符串:编程时最重要的数据类型之一。 正则表达式:赋予开发者更多操作字符串的能力。 1、 Unicode和ASCII 1.1 概述 Unicode是ASCII字符编码的一个扩展,只不过在Windows中,用两个字节对其进行编码,也称为宽字符集&…...
三、低代码平台-单据配置(单表增删改查)
一、业务效果图 主界面 二、配置过程简介 配置流程:业务表设计 -》业务对象建立-》业务单据配置-》菜单配置。 a、业务表设计 b、业务对象建立 c、业务单据配置 功能路径:低代码开发平台/业务开发配置/单据配置维护 d、菜单配置...
6.1 数据驱动型业务管理方法(3%)
1 数据的产生与应用 1.数据的产生 2.数据的特征 3.数据的应用过程 应用到决策过程中 4.从决策到执行 决策:靠经验来进行决策(80%);可依据数据辅助(20%) 经验比数据重要的多,数据是辅助&…...
JVM学习目录
JVM ✅ JVM运行时内存结构 ✅ JVM常用启动参数 ✅ JVM内存分配与垃圾收集流程 ✅ 什么是垃圾回收机制(Garbage Collection,简称GC) ✅ 如何调用垃圾回收器的方法 ✅ GC如何判定对象已死 ✅ 方法区的垃圾收集 ✅ 垃圾收集算法 ✅ JVM垃圾回…...
使用远程桌面连接工具上传文件到Windows轻量应用服务器时,如何优化文件传输速度?
使用远程桌面连接工具上传文件到Windows轻量应用服务器时,如何优化文件传输速度? 优化网络连接:确保网络连接稳定和畅通,使用有线网络连接代替无线网络,以减少网络延迟和提高文件传输速度。 调整远程桌面设置…...
【Linux】基本指令(下)
🦄个人主页:修修修也 🎏所属专栏:Linux ⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位) 日志 日志的概念: 网络设备、系统及服务程序等,在运作时都会产生一个叫log的事件记录;每一行日志都记载着日期、时间、使用者及动作等相关…...
LeetCode受限条件下可到达节点的数目
题目描述 现有一棵由 n 个节点组成的无向树,节点编号从 0 到 n - 1 ,共有 n - 1 条边。 给你一个二维整数数组 edges ,长度为 n - 1 ,其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间存在一条边。另给你一个整数数组 restr…...
[Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包
一、设置应用包名 在Flutter开发中,修改应用程序的包名(也称作Application ID)涉及几个步骤,因为包名是在项目的Android和iOS平台代码中分别配置的。请按照以下步骤操作: 1.Android Flutter工程中全局搜索替换包名 …...
electron-release-server部署electron自动更新服务器记录
目录 一、前言 环境 二、步骤 1、下载上传electron-release-server到服务器 2、宝塔新建node项目网站 3、安装依赖 ①npm install ②安装并配置postgres数据库 ③修改项目配置文件 ④启动项目 ⑤修改postgres的认证方式 ⑥Cannot find where you keep your Bower p…...
贪心(基础算法)--- 区间选点
905. 区间选点 思路 (贪心)O(nlogn) 根据右端点排序 将区间按右端点排序 遍历区间,如果当前区间左端点不包含在前一个区间中,则选取新区间,所选点个数加1,更新当前区间右端点。如果包含,则跳…...
JAVA计算表达式
需求: 1、例如if(score>85){return 1;}else if(score>70){return 2;}else if(score>60){return 3;}else{return 4;}有这一串字符串,要执行这个字符串, 如果score为86分,则能得到1;如果score为30分ÿ…...
【复现】宏景HCM 任意文件读取漏洞_63
目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 宏景HCM 将人才标签技术应用于员工招聘、人才选拔等环节,通过多维度的标签体系,形成不同专业序列的人才画…...
Linux:kubernetes(k8s)搭建mater节点(kubeadm,kubectl,kubelet)(2)
安装k8有多种方式如: minikube kubeadm 二进制安装 命令行工具 我这里就使用kubeadm进行安装 环境 3台centos7 master ip :192.168.113.120 2G运存 2内核 node1 ip :192.168.113.121 2G运存 2内核 node2 ip :192.168.1…...
Web应用安全威胁与防护措施
本文已收录至《全国计算机等级考试——信息 安全技术》专栏 由于极其容易出现漏洞、并引发安全事故,因此数据隐私的保护是目前绝大多数企业不可绕过的运维环节。不过,许多中小型企业往往会错误地认为只有大型企业才会成为黑客的目标。而实际统计数字却截…...
MySQL相关知识汇总
MySQL是一个广泛使用的开源关系型数据库管理系统,它以其高性能、稳定性和易用性而备受开发者喜爱。在软件开发领域,无论是大型项目还是小型应用,MySQL都扮演着重要的角色。本文将对MySQL的一些关键知识点进行汇总,帮助读者更好地了…...
【旧文搬运】为你的 Laravel 应用添加一个基于 Swoole 的 WebSocket 服务
做了一个基于 Swoole 的 WebSocket 扩展包,可以用来做实时状态推送,或者自定义消息处理实现 im,有需要的可以看看: [giorgio-socket] 使用方法 安装 安装扩展包 composer require wu/giorgio-socket发布配置文件 php artisan vendor:pu…...
Chrom和PBV算法全解析:医疗级RPPG心率检测的5个关键陷阱
Chrom和PBV算法全解析:医疗级RPPG心率检测的5个关键陷阱 在ICU病房的昏暗灯光下,护士长李敏正盯着监护仪上剧烈波动的心率曲线皱眉——这位刚完成心脏手术的患者,因传统接触式电极导致皮肤过敏,而基于摄像头的非接触监测系统却频繁…...
拒绝“无效代码式”护肤:基于皮肤生理学的 2026 正确护肤顺序指南
拒绝“无效代码式”护肤:基于皮肤生理学的 2026 正确护肤顺序指南 作者:预颜美历 关键词:皮肤屏障、渗透路径、早C晚A、精准护肤、算法优化 0x00 前言:你的护肤逻辑是否存在“逻辑漏洞”? 在开发中,Bug 往往…...
鸿蒙版微信APP总是收不到提醒?看看这两处设置是否正确
最近很多小伙伴反应升级了最新版的鸿蒙系统(鸿蒙5及以上版本),手机上的微信总是不提醒,导致一些消息不能第一时间获取。这可能是由于微信设置不正确导致的,本文从已知的2种情况分别阐述如何解决。一、检查微信的消息通…...
BongoCat桌宠自定义开发全面解析:从设计到社区贡献的实战指南
BongoCat桌宠自定义开发全面解析:从设计到社区贡献的实战指南 【免费下载链接】BongoCat 🐱 跨平台互动桌宠 BongoCat,为桌面增添乐趣! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat 开源项目设计理念与架构解…...
PHP 8.9 GC性能瓶颈诊断全流程:从memory_get_usage()到gc_status()再到xdebug_gc_dump()的4步精准定位法
第一章:PHP 8.9 垃圾回收优化方法PHP 8.9 引入了基于引用计数增强与周期检测协同的混合式垃圾回收(GC)机制,显著降低了内存泄漏风险并提升了长生命周期对象的清理效率。该版本默认启用增量式 GC 扫描,并支持运行时动态…...
使用OpenSSL转换Fiddler证书为安卓系统格式的完整指南
1. 为什么需要转换Fiddler证书格式 很多安卓开发者都遇到过这样的问题:在Android 7.0及以上版本的设备上,即使安装了Fiddler的CA证书,仍然无法抓取某些应用的HTTPS流量。这是因为从Android 7.0开始,系统默认只信任系统证书存储区…...
Java浏览器自动化终极指南:Jvppeteer让浏览器控制变得简单
Java浏览器自动化终极指南:Jvppeteer让浏览器控制变得简单 【免费下载链接】jvppeteer Headless Chrome For Java (Java 爬虫) 项目地址: https://gitcode.com/gh_mirrors/jv/jvppeteer 对于Java开发者来说,浏览器自动化一…...
FlicFlac:开源音频转换工具从原理到实践
FlicFlac:开源音频转换工具从原理到实践 【免费下载链接】FlicFlac Tiny portable audio converter for Windows (WAV FLAC MP3 OGG APE M4A AAC) 项目地址: https://gitcode.com/gh_mirrors/fl/FlicFlac 在数字音频处理领域,格式转换是连接不同…...
Swoole + Redis Cluster 实时推送系统(千万级QPS压测实录+全链路监控配置清单)
第一章:Swoole Redis Cluster 实时推送系统概览现代高并发实时推送场景(如聊天消息、行情更新、协同编辑)对系统吞吐量、低延迟与水平扩展能力提出严苛要求。本系统以 Swoole 作为高性能异步协程服务器核心,结合 Redis Cluster 提…...
聚焦播放器全链路优化
播放器开发属于音视频领域中独立性强、技术壁垒高的方向。多线程调度各模块是避免任务堵塞、提高并发处理效率的关键。下面从全链路模块展开播放器性能优化与低延迟方案分析:采集模块。本地流指本地文件的读取或者是摄像头或者麦克风数据的读取。以RV1126摄像头为例…...
