当前位置: 首页 > news >正文

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 在安装完成后&#xff…...

数据结构——排序算法——桶排序

桶排序的思想是: 1.将区间划分为 n 个相同大小的子区间,每个子区间称为一个桶 2.遍历数组,将每个数字装入桶中 3.对每个桶内的数字单独排序,这里需要采用其他排序算法,如插入、归并、快排等 4.最后按照顺序将所有桶内的…...

Kafka消息发送可靠性分析

Apache Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者和生产者之间的所有实时数据。Kafka的主要特性包括:高吞吐量、可扩展性、持久性、分布式、可容错等。这些特性使得Kafka成为大规模数据处理和实时数据分析的理想选择。然而&#xf…...

如何将一个字符串转换为驼峰命名法(camel case)?

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

牛客网项目-第一章-笔记

牛客网项目-第一章 环境配置 java maven idea Spring Intializr 搜索jar包的网站&#xff1a;https://mvnrepository.com/ https://start.spring.io/ 缺少的aop包&#xff0c;手动在pom.xml中加入依赖 <dependency><groupId>org.springframework.boot</gro…...

CISP汇总

0x00 前言 CTF 加解密合集CTF Web合集网络安全知识库溯源相关 文中工具皆可关注 皓月当空w 公众号 发送关键字 工具 获取 本文用来整理相关CISP知识笔记 0x01 汇总...

KALILINUX MSF中kiwi(mimikatz)模块的使用

一、简介&#xff1a; kiwi模块&#xff1a;   mimikatz模块已经合并为kiwi模块&#xff1b;使用kiwi模块需要system权限&#xff0c;所以我们在使用该模块之前需要将当前MSF中的shell提升为system。 二、前权&#xff1a; 提权到system权限&#xff1a; 1.1 提到system有…...

hive 中正则表表达式使用

一 概念 概念&#xff1a;正则表达式&#xff08;Regular Expression&#xff09;&#xff0c;又称规则表达式&#xff0c;是记录文本规则的代码。通常被用来检索、替换那些符合某个模式(规则)的文本。 特性&#xff1a;最初是由Unix中的工具软件&#xff08;例如sed和grep&a…...

mssql ,数据库还原BAK命令行方式

如果数据库存在&#xff0c;离线断开 ALTER DATABASE [数据库名] SET OFFLINE WITH ROLLBACK IMMEDIATE --断开其他用户与数据库的连接正式开始还原数据库&#xff1a; USE MASTER --这里注意要使用MASTER&#xff0c;以免出现待还原库被占用的情况 RESTORE DATABASE [数据库名…...

uniapp微信小程序《隐私保护协议》弹窗处理流程

背景 《关于小程序隐私保护指引设置的公告》 《小程序隐私协议开发指南》 流程 1.第一步 必须设置且审核通过&#xff01;&#xff01;&#xff01; 2.第二步 uniapp在manifest.json中添加&#xff01;&#xff01;&#xff01; /* 在 2023年9月15号之前&#xff0c;在 ap…...

RK3568 CAN驱动更新说明

RK3568 CAN问题&#xff1a;同时收发数据一段时间&#xff08;几秒钟&#xff09;can出现错误收发功能异常&#xff0c;必须重新down、up恢复正常 内核更新rockchip_canfd.c、iopoll.h&#xff0c;配置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用法说明。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 function写法 function的标准写法如下&#xff1a; function <返回值的类型或范围>(函数名);<端口说明语句> // in…...

runtime过程中,常见jar问题解决

io.netty java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.<init>此类问题报错&#xff0c;主要是io.netty 多个jar 冲突导致。、 使用以下命令查看同一个jar 有哪些版本 mvn dependency:resolve -Dclassifiersources对一些不愿意引入的依赖加上…...

ElementPlus· banner轮播图实现

功能&#xff0c;①通用型&#xff0c;三方组件完成&#xff08;如&#xff0c;elementPlus&#xff09; ②自己写 轮播图 本文使用vue3中的UI框架——elementPlus——三方组件中的 <el-carousel> 实现轮播图 // 组件静态模板 <template><div class"hom…...

Linux自动化构建项目工具——Makefile/makefile

目录 一&#xff0c;背景知识 二&#xff0c;makefile/Makefile的编写 1.创建makefile/Makefile文件 2.在Makefile文件里写编译代码 3.伪目标——.PHONY 1.伪目标的特点 2.怎样实现总是被执行 4.Makefile/makefile文件的不同编写风格 1.背景知识 2.改写 一&#xff0c;背…...

第11章 字符串和字符串函数

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

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

UE5 音效系统

一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类&#xff0c;将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix&#xff0c;将上述三个类翻入其中&#xff0c;通过它管理每个音乐…...

【java】【服务器】线程上下文丢失 是指什么

目录 ■前言 ■正文开始 线程上下文的核心组成部分 为什么会出现上下文丢失&#xff1f; 直观示例说明 为什么上下文如此重要&#xff1f; 解决上下文丢失的关键 总结 ■如果我想在servlet中使用线程&#xff0c;代码应该如何实现 推荐方案&#xff1a;使用 ManagedE…...

用鸿蒙HarmonyOS5实现国际象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码&#xff0c;使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...

Linux信号保存与处理机制详解

Linux信号的保存与处理涉及多个关键机制&#xff0c;以下是详细的总结&#xff1a; 1. 信号的保存 进程描述符&#xff08;task_struct&#xff09;&#xff1a;每个进程的PCB中包含信号相关信息。 pending信号集&#xff1a;记录已到达但未处理的信号&#xff08;未决信号&a…...

可视化预警系统:如何实现生产风险的实时监控?

在生产环境中&#xff0c;风险无处不在&#xff0c;而传统的监控方式往往只能事后补救&#xff0c;难以做到提前预警。但如今&#xff0c;可视化预警系统正在改变这一切&#xff01;它能够实时收集和分析生产数据&#xff0c;通过直观的图表和警报&#xff0c;让管理者第一时间…...

2025年ESWA SCI1区TOP,自适应学习粒子群算法AEPSO+动态周期调节灰色模型,深度解析+性能实测

目录 1.摘要2.粒子群算法PSO原理3.改进策略4.结果展示5.参考文献6.代码获取7.算法辅导应用定制读者交流 1.摘要 能源数据的科学预测对于能源行业决策和国家经济发展具有重要意义&#xff0c;尤其是短期能源预测&#xff0c;其精度直接影响经济运行效率。为了更好地提高预测模型…...