pytest-基础
一.使用pytest,默认的测试用例的规则以及基础应用
1.模块名字必须已test_开头或者_test结尾
2.测试类必须以Test开头,并且不能有init方法
3.测试方法必须以test开头
示例代码 test_001.py
import pytest
class TestCase:def test_case(self):print("执行测试用例")
二、pytest测试用例的运行方式
主函数模式:
运行所有:pytest.main()
运行指定的模块:pytest.main(['-vs',模块名.py])
运行指定目录:mytest.main(['-vs','目录路径'])
通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成
·类外的用例通过pytest.main(['-vs','模块路径::方法名'])
·类内的用例:pytest.main('-vs','模块路径::类名::方法名')
命令行模式:
·运行所有:pytest
·运行指定模块:pytest -vs 目录路径
·通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数组成
·类外的用例:pytest -vs 模块名::方法名
·类内的用例:pytest -vs 模块路径::类名::方法名
pytest.ini配置文件模式
pytest.ini是pytest单元测试框架的核心配置文件
位置:必须放在项目的根目录
编码格式,必须使用ANSI格式,可用notepad++等工具修改、
作用:改变pytest默认的行为
运行的规则:主函数模式和命令行模式都会读取这个配置文件
配置文件实例:
[pytest]
#命令行参数,用空格分割
addopts = -vs
#测试用例文件,可以自己配置,...../testcase为上已成的testcase文件夹
testpaths = ../testcase
#配置测试搜索的模块文件名称
pytest_files = test*.py
#配置测试搜索的测试类名
pytest_classes = Test*
#配置测试搜索的测试函数名
pytest_funtions = test
以上为示例代码,用的时候需要把中文去掉,使用ANSI编码格式保存
参数详解:
·-s:输出调试信息,包括print打印的信息
·-v:显示更多详细的信息
·-n:支持多线程或者分布式运行测试用例
·主函数模式:pytest.main('-vs','模块名.py','-n=2')--->调用两个线程执行
命令行模式:pytest -vs 模块名.py -n 2
如果有5条用例用两个线程
线程一:1,3,5
线程二:2,4条
·--reruns:失败用例重跑
主函数模式:pytest.main(['-vs','模块名.py','-n=2','--reruns=2'])
命令行模式:pytest -vs 模块名.py -n = 2 --reruns=2
失败后重跑两次
·-x:遇到报错测试用例则立即停止测试
·--mafail:遇到指定个数用例失败就停止测试
主函数模式:pytest.main(['-vs','模块名.py','--maxfail=2'])
命令行模式:pytest -vs 模块名.py --mafail=2
· -k:根据测试用例名称内的部分字符串指定执行测试用例
主函数模式:pytest.main(['-vs','模块名.py','-k=xx'])
命令行模式:pytest -vs 模块名.py -k= 'xx'
·--html:生成原生html测试的报告
主函数模式:pytest.main(['-vs','模块名.py','--html=报告路径'])
命令模式:pytest -vs 模块名.py --html '报告路径'
·-vs:综合 -s,-v功能
三、pytest的测试执行循序
·unittest的执行顺序:默认按照ASCII表的顺序执行测试用例
·pytest的执行顺序:默认按照从上到下的顺序执行测试用例
改变pytest的默认执行循序:使用mark中装饰器
@pytest.mark,run(order=3)
四、如何分组执行(冒烟,分模块执行,分接口或者ui执行)
smoke:莫言用例,分布在各个模块里面
步骤一:在pytest.ini配置文件内添加配置信息:markers
[pytest]
addopts = -vs
testpaths = ../testcase
python_files = test*.py
python_classes = Test*
python_functions = test
markers =
smoke:冒烟
g1:组一
g2:组二
步骤二:给测试函数添加装饰器@pytest.mark.smoke
步骤三:执行测试用例:
主函数模式:pytest.main(['-vs','模块名.py','-m=smoke'])
命令行模式:pytest -vs -m 'smoke'
注意:此处的smoke不是固定的,可以自己定义标记名称
如果想执行多个标记的用例:pytest -vs -m '标记1' or '标记2'
五、pytest跳过测试用例
无条件跳过:
添加装饰器:@pytest.mark,skip(reason = "跳过原因")
有条件跳过:
添加装饰器:@pytest.mark.skipif(表达式,reason = '跳过原因')
注意:此处的表达式得到的应该是一个布尔类型,表达式成立则跳过,否则执行测试用例
六、断言
在pytest框架中使用assert进行断言
示例代码
class TestCase:
# 测试用例
def test_case(self):
print("执行测试用例")
# 断言:语法assert 表达式
assert 1 == 2
注意:assert后面的表达式需要返回布尔值类型,True为测试用例通过,False为用例失败
相关文章:
pytest-基础
一.使用pytest,默认的测试用例的规则以及基础应用 1.模块名字必须已test_开头或者_test结尾 2.测试类必须以Test开头,并且不能有init方法 3.测试方法必须以test开头 示例代码 test_001.py import pytest class TestCase:def test_case(self):print("执行测试用例&quo…...

在openSUSE上开启护眼模式
色温 色温是用来衡量光源色彩时所用到的一个概念,单位为开尔文。热黑体辐射体与光源温度相同时的温度,就是该光源的色温。 显而易见,色温越低时,光源看起来越黄;色温越高时,光源看起来越蓝。下面是一些常见…...

vue基础知识十:Vue中组件和插件有什么区别?
一、组件是什么 回顾以前对组件的定义: 组件就是把图形、非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式,在Vue中每一个.vue文件都可以视为一个组件 组件的优势 降低整个系统的耦合度,在保持接口不…...
Arthas是一个Java诊断工具 的入门使用
Arthas是一个Java诊断工具,可以帮助开发人员在运行时快速诊断和解决线上应用故障。 以下是Arthas的入门步骤: 安装Arthas 你可以在Arthas Github页面中找到安装指南,根据操作系统选择相应的安装方式。 启动Arthas 在安装完成后ÿ…...
数据结构——排序算法——桶排序
桶排序的思想是: 1.将区间划分为 n 个相同大小的子区间,每个子区间称为一个桶 2.遍历数组,将每个数字装入桶中 3.对每个桶内的数字单独排序,这里需要采用其他排序算法,如插入、归并、快排等 4.最后按照顺序将所有桶内的…...
Kafka消息发送可靠性分析
Apache Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者和生产者之间的所有实时数据。Kafka的主要特性包括:高吞吐量、可扩展性、持久性、分布式、可容错等。这些特性使得Kafka成为大规模数据处理和实时数据分析的理想选择。然而…...

如何将一个字符串转换为驼峰命名法(camel case)?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 思路⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领…...

牛客网项目-第一章-笔记
牛客网项目-第一章 环境配置 java maven idea Spring Intializr 搜索jar包的网站:https://mvnrepository.com/ https://start.spring.io/ 缺少的aop包,手动在pom.xml中加入依赖 <dependency><groupId>org.springframework.boot</gro…...
CISP汇总
0x00 前言 CTF 加解密合集CTF Web合集网络安全知识库溯源相关 文中工具皆可关注 皓月当空w 公众号 发送关键字 工具 获取 本文用来整理相关CISP知识笔记 0x01 汇总...
KALILINUX MSF中kiwi(mimikatz)模块的使用
一、简介: kiwi模块: mimikatz模块已经合并为kiwi模块;使用kiwi模块需要system权限,所以我们在使用该模块之前需要将当前MSF中的shell提升为system。 二、前权: 提权到system权限: 1.1 提到system有…...
hive 中正则表表达式使用
一 概念 概念:正则表达式(Regular Expression),又称规则表达式,是记录文本规则的代码。通常被用来检索、替换那些符合某个模式(规则)的文本。 特性:最初是由Unix中的工具软件(例如sed和grep&a…...
mssql ,数据库还原BAK命令行方式
如果数据库存在,离线断开 ALTER DATABASE [数据库名] SET OFFLINE WITH ROLLBACK IMMEDIATE --断开其他用户与数据库的连接正式开始还原数据库: USE MASTER --这里注意要使用MASTER,以免出现待还原库被占用的情况 RESTORE DATABASE [数据库名…...

uniapp微信小程序《隐私保护协议》弹窗处理流程
背景 《关于小程序隐私保护指引设置的公告》 《小程序隐私协议开发指南》 流程 1.第一步 必须设置且审核通过!!! 2.第二步 uniapp在manifest.json中添加!!! /* 在 2023年9月15号之前,在 ap…...
RK3568 CAN驱动更新说明
RK3568 CAN问题:同时收发数据一段时间(几秒钟)can出现错误收发功能异常,必须重新down、up恢复正常 内核更新rockchip_canfd.c、iopoll.h,配置Networking support --->CAN bus subsystem support --->CAN Devic…...
day47:C++ day7,异常处理、using的第三种用法、类型转换、lambda表达式、STL标准模板库
my_vectoers.h: #ifndef MY_VECTORS_H #define MY_VECTORS_H #include <iostream>using namespace std;template<typename TYPE> class my_vectors { private:TYPE* ptr;int num;int cnum;TYPE* start_ptrNULL;TYPE* end_ptrNULL; public://无参构造my_vectors(){…...

function—— Verilog的函数
文章目录 前言function写法语法举例说明调用 前言 function用法说明。 提示:以下是本篇文章正文内容,下面案例可供参考 function写法 function的标准写法如下: function <返回值的类型或范围>(函数名);<端口说明语句> // in…...

runtime过程中,常见jar问题解决
io.netty java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.<init>此类问题报错,主要是io.netty 多个jar 冲突导致。、 使用以下命令查看同一个jar 有哪些版本 mvn dependency:resolve -Dclassifiersources对一些不愿意引入的依赖加上…...
ElementPlus· banner轮播图实现
功能,①通用型,三方组件完成(如,elementPlus) ②自己写 轮播图 本文使用vue3中的UI框架——elementPlus——三方组件中的 <el-carousel> 实现轮播图 // 组件静态模板 <template><div class"hom…...

Linux自动化构建项目工具——Makefile/makefile
目录 一,背景知识 二,makefile/Makefile的编写 1.创建makefile/Makefile文件 2.在Makefile文件里写编译代码 3.伪目标——.PHONY 1.伪目标的特点 2.怎样实现总是被执行 4.Makefile/makefile文件的不同编写风格 1.背景知识 2.改写 一,背…...

第11章 字符串和字符串函数
本章介绍以下内容: 函数:gets()、gets_s()、fgets()、puts()、fputs()、strcat()、strncat()、strcmp()、strncmp()、strcpy()、strncpy()、sprintf()、strchr() 创建并使用字符串 使用C库中的字符和字符串函数,并创建自定义的字符串函数 使用…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...

Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

CSS 工具对比:UnoCSS vs Tailwind CSS,谁是你的菜?
在现代前端开发中,Utility-First (功能优先) CSS 框架已经成为主流。其中,Tailwind CSS 无疑是市场的领导者和标杆。然而,一个名为 UnoCSS 的新星正以其惊人的性能和极致的灵活性迅速崛起。 这篇文章将深入探讨这两款工具的核心理念、技术差…...