Pytest使用fixture实现token共享
同学们在做pytest接口自动化时,会遇到一个场景就是不同的测试用例需要有一个登录的前置步骤,登录完成后会获取到token,用于之后的代码中。首先我先演示一个常规的做法。
- 首先在conftest定义一个login的方法,方法返回token
@pytest.fixture(scope="function")
def login():header = {"Content-Type": "application/json"}data = {"username": "test","password": "test"}login_info = requests.post(url='http://.../login',json=data).json()return login_info['token']
2.在测试用例方法中引入这个方法,所有用到token,都需要使用login这个方法。
def test_user(login):token = login # 通过login获取token......
def test_address(login):token = login # 通过login获取token......
通过上面的方法,可以解决接口使用token的需求,不过这么做每次都会先执行login接口,有没有一种方法可以只执行一次login接口,后面的接口就不调用login接口了呢。经过老武测试,其实是可以做到的。
思路:login接口使用缓存,当有token的时候就使用token,就不调用login接口了,如果没有则调用login接口,再把token缓存起来。
那需要对上面login的方法进行改造,增加save_token方法,将token存起来。引入pickle模块,用来写数据。
import pickle
@pytest.fixture(scope="function")
def login():......# 增加缓存方法save_token(login_info['token'])return login_info['token']def save_token(token):# login_path为目录中一个存放token的文件路径,自己定义。with open(login_path, 'wb') as f:pickle.dump(login_info, f)f.close()
上面代码完成了token的写入,当没有token的时候token写入到文件中。如果有token,我们就不需要执行登录操作,直接使用文件中的token,这个时候代码需要继续改造。方法开始时判断当前是否存在保存token的文件,如果有则获取token,不再执行登录的操作。再增加一个读取文件内容的方法get_login_info
import pickle
@pytest.fixture(scope="function")
def login():if os.path.exists(login_info):return get_login_info(login_info)else:......# 增加缓存方法save_token(login_info['token'])return login_info['token']
# 增加一个读取文件的方法
def get_login_info():with open(login_path, 'rb') as f:data = pickle.load(f)f.close()return data
以上工作已经完成了90%,再来个收尾就完美了。每次执行用例结束后把存token文件删除,不然生成了一个token,代码判断token文件存在,就不会去调用登录接口。token一但过期,用例就会执行失败。
在conftest定义一个方法,每次执行用例都清理一下token文件。要注意级别是session级别哦。
@pytest.fixture(scope='session', autouse=True)
def clear_login_file():if os.path.exists(login_path):logger.info("清理token文件")os.remove(login_path)
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
软件测试面试小程序
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
涵盖以下这些面试题板块:
1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux
6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
相关文章:
Pytest使用fixture实现token共享
同学们在做pytest接口自动化时,会遇到一个场景就是不同的测试用例需要有一个登录的前置步骤,登录完成后会获取到token,用于之后的代码中。首先我先演示一个常规的做法。 首先在conftest定义一个login的方法,方法返回token pytes…...
You have docker-compose v1 installed, but we require Docker Compose v2.
curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose chmod x /usr/local/bin/docker-compose docker-compose --version...
nlopt在windows上的安装使用
nlopt在windows上的安装使用 目录 nlopt在windows上的安装使用一、nlopt下载二、def转lib三、代码 一、nlopt下载 1.下载nlopt库:https://nlopt.readthedocs.io/en/latest/ 2.解压 3.下载dll和def:http://ab-initio.mit.edu/wiki/index.php?titleNLopt…...
【React学习】React中的setState方法
1. setState概述 setState 是React框架中,用于更新组件状态的方法。 setState 方法由React组件继承自 React.Component 类的一部分。通过调用 setState,可以告诉 React要更新组件的状态,并触发组件的重新渲染。 this.setState(newState, ca…...
ATTCK实战系列——红队实战(一)
目录 搭建环境问题 靶场环境 web 渗透 登录 phpmyadmin 应用 探测版本 写日志获得 webshell 写入哥斯拉 webshell 上线到 msf 内网信息收集 主机发现 流量转发 端口扫描 开启 socks 代理 服务探测 getshell 内网主机 浏览器配置 socks 代理 21 ftp 6002/700…...
服务器感染了.360勒索病毒,如何确保数据文件完整恢复?
引言: 随着科技的不断进步,互联网的普及以及数字化生活的发展,网络安全问题也逐渐成为一个全球性的难题。其中,勒索病毒作为一种危害性极高的恶意软件,在近年来频频袭扰用户。本文91数据恢复将重点介绍 360 勒索病毒&a…...
【idea】社区版idea运行Tomcat
使用 Smart Tomcat插件 配置运行:...
网络安全面试题整理
目录标题 1.你常用的渗透工具有哪些?2.xss盲打到内网服务器的利用3.鱼叉式攻击和水坑攻击是什么?4.什么是虚拟机逃逸?5.中间人攻击的原理和防御?6.TCP三次握手过程?7.七层模型有哪七层?8.对云安全的理解&am…...
docker使用code-server搭建开发环境 v2.0
安装docker docker安装 下载安装nodejs、rust等环境 1、设置安装目录 # 创建路径 mkdir /usr/local/node # 切换路径 cd /usr/local/node2、安装nodejs16 # 下载 wget https://nodejs.org/dist/latest-v18.x/node-v18.17.1-linux-x64.tar.xz#解压 tar -xvf node-v18.17.1…...
Python写一个创意五子棋游戏
前言 在本教程中,我们将使用Python写一个创意五子棋游戏 📝个人主页→数据挖掘博主ZTLJQ的主页 个人推荐python学习系列: ☄️爬虫JS逆向系列专栏 - 爬虫逆向教学 ☄️python系列专栏 - 从零开始学python 首先 GomokuGame 类的构造函数 __ini…...
Nvidia Jetson 编解码开发(1)介绍
前言 由于项目需要,需要开发Jetson平台的硬件编解码; 优化CPU带宽,后续主要以介绍硬件编解码为主 1.Jetson各平台编解码性能说明 如下是拿了Jetson nano/tx2/Xavier等几个平台做对比; 这里说明的编解码性能主要是对硬件来说的…...
【操作系统】24王道考研笔记——第一章 计算机系统概述
第一章 计算机系统概述 一、操作系统基本概念 1.1 定义 1.2 特征 并发 (并行:指两个或多个事件在同一时刻同时发生) 共享 (并发性指计算机系统中同时存在中多个运行着的程序,共享性指系统中的资源可供内存中多个并…...
菜鸟Vue教程 - 实现带国际化的注册登陆页面
初接触vue的时候觉得vue好难,因为项目中要用到,就硬着头皮上,慢慢的发现也不难,无外乎画个布局,然后通过样式调整界面。在通过属性和方法跟js交互。js就和我们写的java代码差不多了,复杂一点的就是引用这种…...
Mybatis ORDER BY 排序失效 ORDER BY 与 CASE WHEN THEN 排序问题
一、ORDER BY 排序失效 如果传递给 mapper 的参数值是以 #{test_参数} 的形式,那么就会报错 具体如下: 传递参数是 name 排序规则是升序 asc package com.ruoyi.web.mapper; public interface TestMapper {List<TestEntity> getTestData( Para…...
日常BUG——微信小程序提交代码报错
😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 在使用微信小程序开发工具进行提交代码时,报出如下错误: Invalid a…...
1048:有一门课不及格的学生
【题目描述】 给出一名学生的语文和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)。若该生恰好有一门课不及格,输出1;否则输出0。 【输入】 一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成…...
数据结构——B-树、B+树、B*树
一、B-树 1. B-树概念 B树是一种适合外查找的、平衡的多叉树。一棵m阶(m>2)的B树,是一棵平衡的M路平衡搜索树,它可以是空树或满足以下性质: (1)根节点至少有两个孩子。 (2&#…...
2023国赛数学建模思路 - 案例:FPTree-频繁模式树算法
文章目录 算法介绍FP树表示法构建FP树实现代码 建模资料 ## 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法,就是频繁模式树算法,…...
GPT系列总结
1.GPT1 无监督预训练有监督的子任务finetuning https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf 1.1 Unsupervised pre-training (1)基于一个transformer decoder,通过一个窗口的输入得…...
【福建事业单位-综合基础知识】05民法典
这里写自定义目录标题 一、民法概述概念原则总结 二、自然人概念总结 三、民事法律行为总结 民法考察2-4题(重点总则篇) 一、民法概述 概念原则 总结 二、自然人 概念 总结 三、民事法律行为 总结...
论文降AI率全流程教程:检测→分析→降AI→复查四步走完全指南
论文降AI率全流程教程:检测→分析→降AI→复查四步走完全指南 很多同学面对"论文AI率超标"这个问题时,第一反应是慌,第二反应是随便找个工具处理一下,第三反应是发现没降下来,更慌了。 这篇文章要解决的&…...
告别‘Hello World’:用Gin框架从零搭建一个带用户登录和文件上传的Web服务(Go 1.21+)
告别‘Hello World’:用Gin框架从零搭建一个带用户登录和文件上传的Web服务(Go 1.21) 当你已经掌握了Go语言的基础语法,接下来最令人兴奋的莫过于亲手构建一个真实的Web服务。Gin框架以其高性能和简洁的设计,成为Go开发…...
extern ‘C‘原理与C/C++混合编程实践
1. 深入解析extern C的底层原理与工程实践1.1 C/C混合编程的核心挑战在嵌入式系统开发中,C与C语言的混合编程是常见需求。当C代码需要调用C语言编写的库函数时,编译器对函数名的处理方式差异会导致链接错误。这种差异源于两种语言对函数重载和名字空间的…...
新手避坑指南:安捷伦/是德示波器探头选1MΩ还是50Ω?实测对比告诉你差别有多大
示波器探头阻抗选择实战手册:1MΩ与50Ω的黄金法则 第一次接触示波器时,我犯了个低级错误——用1MΩ探头直接测量射频电路,结果不仅波形畸变成锯齿状,还差点烧毁前端放大器。这个价值3000元的教训让我深刻认识到:探头…...
palera1n 开发者贡献指南:如何快速参与iOS越狱项目开发 [特殊字符]
palera1n 开发者贡献指南:如何快速参与iOS越狱项目开发 🚀 【免费下载链接】palera1n Jailbreak for arm64 devices on iOS 15.0 项目地址: https://gitcode.com/GitHub_Trending/pa/palera1n palera1n是一款支持iOS 15.0系统的arm64设备越狱工具…...
GoAccess源码深度解析:从main函数到核心模块调用链的完整指南
GoAccess源码深度解析:从main函数到核心模块调用链的完整指南 【免费下载链接】goaccess allinurl/goaccess: 是一个开源的 Web 日志分析工具,用于分析访问日志并生成报告。它可以帮助开发者快速了解网站流量、访问者等信息,优化网站性能。特…...
清单来了:2026年公认好用的专业AI论文网站
2026年AI论文写作工具已从“内容生成”进化为多维度学术支持系统,核心差异体现在文献真实性、格式合规性、长文本逻辑、查重降重、AIGC合规五大维度。本次测评覆盖6款主流工具,涵盖中文/英文、全流程/专项、免费/付费场景,让你高效筛选适合自…...
告别拼写红线:Vim-galore教你打造专属拼写检查系统
告别拼写红线:Vim-galore教你打造专属拼写检查系统 【免费下载链接】vim-galore :mortar_board: All things Vim! 项目地址: https://gitcode.com/gh_mirrors/vi/vim-galore 你是否厌倦了在Vim中写作时不断出现的拼写错误红线?想要一个强大而灵活…...
在openKylin下安装配置GitLab遇到的问题及解决方案(v0.1.0)
作者:沈传越 明德融创工作室(Minter Fusion Studio, MFS) 出品 本文安装的GitLab-ce 15.10.0版。操作系统openKylin 2.0 SP2。 一、安装GitLab-ce依赖软件时报错 1. 错误描述 在执行sudo apt-get install curl openssh-server ca-certifi…...
3分钟看穿B站评论区:高效识别用户背景的精准秘诀
3分钟看穿B站评论区:高效识别用户背景的精准秘诀 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分,支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checker 在B站评论…...

