接口自动化测试之pytest 运行方式及前置后置封装

article/2025/6/9 5:37:05

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

一、Pytest 优点认知

1.可以结合所有的自动化测试工具
2.跳过失败用例以及失败重跑
3.结合allure生产美观报告
4.和Jenkins持续集成
5.很多强大的插件

 pytest-html:生产html测试报告pytest-xdist:多线程运行pytest-ordering:改变用例执行顺序pytest-rerunfailures:失败用例重爬allure-pytest:美观测试报告

一般项目中,会使用requerments.text文档保存插件名称,进行批量一次性安装

pip install -r requerments.txt

二、运行方式

1.主函数运行方式:main方法运行
2.命令运行方式
pytest -vs
-v:更加详细信息
-s:调试信息
-n=处理:多线程运行
--reruns=数字:失败用例重跑
--reruns=数字:失败用例重跑
--html=./report.html:生成html报告

用例分组运行

1.进行用例分组:
2.用例进行注解:

#@pytest.mark.分组名称  如下:
@pytest.mark.smoke

[pytest]
##运行命令,例如: -vs -m "smoke"分组执行名称都是固定的
addopts = -vs 
#测试用例文件目录
testpaths = ./testcases
python_files = test_*.py
python_classes = Test*
python_functions = test_*
##分组
markers =smoke:maoyancase:gongneng

三、前置后置,夹具

1.简单区分:直接调用方法,但是接口过多时,比较麻烦
    def setup(self):print("每个用例执行之前,都执行一遍")def teardown(self):print("每个用例执行之后,都执行一遍")
2.实现部分前置:如只想之一个用例进行前置,如登录时需要连接数据库。

需要使用装置器:

参数介绍:

@pytest.fixture(scope="作用域",params="数据驱动",autouse="是否自动执行",ids="自定义参数",name="重命名")
作用域:可以函数、类、模块、包、session

使用方法:

1.需要前置的功能函数上进行标注装置器
2.别的方法函数之间调用装置器

如下:一个文件里面进行部分前置唤醒

import timeimport pytest
import requests
#实现装置器标注前置,进行标注,yieid进行唤醒返回
@pytest.fixture(scope="function")
def conn_getbase():print("连接数据库成功")yieldprint("关闭数据库成功")class TestSendRequsets:#过多接口时,比较麻烦冗余# def setup(self):#     print("每个用例执行之前")## def teardown(self):#     print("每个用例执行之后")def test_getImgCode(self):# 接口urlt = time.time()timess = str(int(round(t * 1000)))times = str(int(t))url = "http://124.71.230.185:9002/jeecg-boot/sys/randomImage/" + "" + timess# 参数data = {"_t": times,}# # get请求rep = requests.request('get', url, params=data)print(rep.text)# 标注为smoke分组用例@pytest.mark.smokedef test_Login(self,conn_getbase):# post请求url = "http://124.71.230.185:9002/jeecg-boot/sys/login"# 参数data = {"captcha": "Gkak!@#2021","checkKey": 1637811815838,"password": "123456","remember_me": 1,"username": "admin"}rep = requests.request('post', url, json=data)statues = rep.json()["success"]message = rep.json()["message"]if statues:print("")else:# raise Exception(message)print(message)if __name__ == '__main__':pytest.main();
3.封装灵活调用

一般情况下:@pytest.fixture()会和conftest.py文件一块使用

conftest.py名称是固定的,功能如下:

1.用处是多个py文件之间共享前置配置。
2.里面的方法在调用时,不需要导入,可以之间调用
3.可以都多个conftest.py文件,也可以有不同的层级

conftest.py文件详情请看下一章

实现:

1.目录下之间创建conftest.py文件
2.把上面的这段代码之间粘贴到conftest.py文件中

# 前置函数
import pytest@pytest.fixture(scope="function")
def conn_getbase():print("连接数据库成功")yieldprint("关闭数据库成功")

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

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


http://www.hkcw.cn/article/RPUnmxaYBX.shtml

相关文章

PH热榜 | 2025-06-03

1. Knowledge 标语:像认识朋友一样去销售给潜在客户,因为你其实了解他们! 介绍:Knowledge 是一个针对个人的销售智能平台,它利用行为数据和心理测评来识别市场上的潜在买家,并指导销售团队以最真实、最有…

【Java】性能调优:利用 jstack 寻找 Java 程序卡顿的真相

前言 当 Java 程序出现给人感觉 “卡顿”、“响应慢”、CPU 风调高、系统给予调用总是延迟时,我们需要采用系统层和虚拟机层的合理工具来分析细节。 本文仅从 JVM 的角度来分析,研究如何利用 jstack 进行 Java 程序性能调优。 Java 程序卡顿的常规原因…

Skyeye 云智能制造办公系统 v3.16.6 发布

Skyeye 云智能制造,采用 Springboot (微服务) Layui UNI-APP Ant Design Vue 的低代码平台。包含 30 多个应用模块、50 多种电子流程,CRM、PM、ERP、MES、ADM、EHR、笔记、知识库、项目、门店、商城、财务、多班次考勤、薪资、招聘、云售后、论坛、公…

Python+requests+pytest+allure自动化测试框架

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、核心库 requests request请求 openpyxl excel文件操作 loggin 日志 smtplib 发送邮件 configparser unittest.mock mock服务 2、目录结构 base utils …

06 APP 自动化- H5 元素定位

文章目录 H5 元素定位1、APP 分类2、H5 元素3、H5 元素定位环境的搭建4、代码实现: H5 元素定位 1、APP 分类 1、Android 原生 APP2、混合 APP(Android 原生控件H5页面)3、纯 H5 App 2、H5 元素 H5 元素容器 WebViewWebView 控件实现展示网页 3、H5 元素定位环…

项目计划未与实际情况同步更新,如何保持计划的实时性?

项目计划未与实际情况同步更新,可以通过建立实时更新机制、加强信息共享和沟通、引入敏捷管理工具、实施持续监控流程、明确计划更新责任来保持计划的实时性。 其中,建立实时更新机制至关重要。实时更新机制确保项目计划始终反映最新的进展和问题状况&am…

会议效率低下,应该怎么办

面对会议效率低下的问题,建议从以下几个方面进行优化:明确会议目标、控制会议时长、限定参与人员、使用协作工具、制定会议输出机制。其中,明确会议目标 是提升效率的关键起点。很多无效会议根源在于“为什么开会”这个问题没有回答清楚。只有…

LabVIEW基于 DataSocket从 OPC 服务器读取数据

LabVIEW 中基于 DataSocket 函数从 OPC 服务器读取数据的功能,为工业自动化等场景下的数据交互提供了解决方案。通过特定函数实现 URL 指定、连接建立与管理、数据读取,相比传统 Socket 通信和 RESTful API ,在 OPC 服务器数据交互场景有适配…

数据挖掘顶刊《IEEE Transactions on Knowledge and Data Engineering》2025年5月研究热点都有些什么?

本推文对2025年5月出版的数据挖掘领域国际顶级期刊《IEEE Transactions on Knowledge and Data Engineering》进行了分析,对收录的62篇论文的关键词与研究主题进行了汇总,并对其中的研究热点进行了深入分析,希望能为相关领域的研究人员提供有…

结合 AI 生成 mermaid、plantuml 等图表

AI 画图 AI 画图并不是真的让 AI 画一个图片,而是让 AI 根据你的需求,生成对应的需求文本,再根据 “文本画图” 来生成图片。 Mermaid mermaid 支持流程图、时序图、架构图等等多种图片绘制。当然最终生成的效果和样式会根据不同的“文本代…

Java基础(二):八种基本数据类型详解

Java基础系列文章 Java基础(一):发展史、技术体系与JDK环境配置详解 Java基础(二):八种基本数据类型详解 目录 一、比特(bit)和字节(Byte)1、定义与换算关系2、应用场景差异 二、各类型详解1、整数类型&a…

数据安全合规体系构建的“三道防线“

引言 "三道防线"模型架构图 #mermaid-svg-wbeppAbwa3Vb3nL2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-wbeppAbwa3Vb3nL2 .error-icon{fill:#552222;}#mermaid-svg-wbeppAbwa3Vb3nL2 .error-text{fi…

MySQL强化关键_019_索引优化

目 录 一、最左前缀原则 1.完全使用索引 2.部分使用索引 3.不使用索引 4.效率折损 (1)使用范围查找 (2)索引断开 二、索引失效场景 1. 索引列参与运算 2.索引列模糊查询以“%”开始 3.索引列是字符串类型,查…

ABAP锁对象

1、锁表 在一些业务场景中,我们需要将某张表或某张表中的某些数据锁定,防止多人对该表进行操作,导致数据出现问题。SAP对于表的锁定,有专门的锁对象。 1.1、创建锁 事务代码SE11,表的锁对象名称,需要以E…

YOLO-V2 (学习记录)

目录 一、记录YOLO-v2 的处理流程步骤 二、优势与不足 三、细节分析 1.候选框K-means计算细节 2.网络输出 3.损失函数(Loss Function) 学习之前,需要补充下论文中提到知识点。 1.什么是Batch Normalization 参考博文:Batc…

AI Coding 资讯 2025-06-03

Prompt工程 RAG-MCP:突破大模型工具调用瓶颈,告别Prompt膨胀 大语言模型(LLM)在工具调用时面临Prompt膨胀和决策过载两大核心挑战。RAG-MCP创新性地引入检索增强生成技术,通过外部工具向量索引和动态检索机制,仅将最相关的工具信…

CAMEL-AI开源自动化任务执行助手OWL一键整合包下载

OWL 是由 CAMEL-AI 团队开发的开源多智能体协作框架,旨在通过动态智能体交互实现复杂任务的自动化处理,在 GAIA 基准测试中以 69.09 分位列开源框架榜首,被誉为“Manus 的开源平替”。我基于当前最新版本制作了免安装一键启动整合包。 CAMEL-…

线程池RejectedExecutionException异常

文章目录 1、报错2、定位3、修复4、线程池使用的一点思考 1、报错 检索项目日志时,发现一个异常堆栈信息,核心报错: java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.CompletableFuture$AsyncSupply480a10c7…

视频监控管理平台EasyCVR安防小知识:监控摄像头异响问题排查与处理

在视频监控系统广泛应用于日常生活的当下,监控摄像头出现异响是常见且影响使用体验的问题。为快速定位和解决该问题,特制定本应用解决方案,依据异响来源分为硬盘录像机异响与监控摄像头异响两类进行处理。 一、硬盘录像机发出异响 硬盘录像机…

NX890NX894美光固态闪存NX906NX908

美光NX系列固态闪存深度解析 技术架构与性能突破 美光NX系列固态闪存(如NX890、NX894、NX906、NX908)的技术核心基于G9 NAND技术,通过优化晶体管结构与制程工艺,显著提升存储密度与读写速度。例如,NX895的MT29F8T08G…