pytest + yaml 框架 - 3.全局仅登录一次,在用例中自动在请求头部添加Authentication token认证

news/2024/5/8 11:09:22/文章来源:https://blog.csdn.net/qq_27371025/article/details/128125913

前言

我们在使用自动化测试框架的时候,经常会遇到一个需求,希望在全局用例中,仅登录一次,后续所有的用例自动带上请求头部token 或者cookies。

环境准备

Python 3.8版本
Pytest 7.2.0 最新版

pip 安装插件

pip install pytest-yaml-yoyo

需使用v1.0.2 版本

登录fixture 功能

我在pytest + yaml 框架框架中封装了一个内置fixture叫requests_session, 它的作用范围是scope="session",也就是全部session用例会话中仅实例化一次。
现在我只需在conftest 中写一个登录的fixture功能,获取token后添加到requests_session头部

import pytest
import uuid
"""
全局仅登录一次,获取token,
在请求头部添加Authentication Bearer 认证
内置fixture requests_session
"""def login():"""登录方法"""# 调用登录方法,返回tokenreturn str(uuid.uuid4())  # noqa@pytest.fixture(scope="session", autouse=True)
def login_first(requests_session):"""全局仅一次登录, 更新session请求头部"""# 调用登录方法,获得tokentoken = login()headers = {"Authentication": f"Bearer {token}"}requests_session.headers.update(headers)

上面代码中,我用login() 函数实现登录功能,这里返回一个随机值,主要是为了验证我只调用了一次登录方法
接着我写2个yaml文件(注意,yaml文件中也不需要重复去添加请求头部了
test_get_demo.yml

config:name: getteststeps:
-name: getrequest:method: GETurl: http://httpbin.org/getvalidate:- eq: [status_code, 200]

test_post_demo.yml

config:name: post示例variables:username: testpassword: "123456"teststeps:
-name: postrequest:method: POSTurl: http://httpbin.org/postjson:username: ${username}password: ${password}validate:- eq: [status_code, 200]- eq: [headers.Server, gunicorn/19.9.0]- eq: [$..username, test]- eq: [body.json.username, test]

运行用例

在命令行中输入pytest运行
抓包看发过去的请求

于是可以看到,在2个用例中都自动带上了请求头部参数。
(登录cookies的使用原理也是一样的,登录后cookies一般会自动保持)

其它需求

那有些接口不需要登录怎么办呢?比如登录和注册的接口,是不需要带上登录token的,那不能一刀切。
我除了默认用到一个requests_session 全局的内置fixture,还预留了2个

  • requests_module: 每个yaml文件中用一次
  • requests_function: 每个用例中用一次

在yaml文件中切换到指定fixture功能,requests_modulerequests_function 后续会实现,先实现大需求,解决大部分人遇到的痛点问题!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_228429.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS开发之打包上传到App Store——(一)各种证书的理解

OK,有日子没写iOS开发的相关文章啦,主要是最近的精力都没在这上面,不过既然产品已经快要出来了,就有必要了解一下各种证书啥的(众所周知iOS的一堆证书可是很让人头大呀),最近确实被这个搞得头大…

Microsoft SQL Server 图书管理数据库的建立

文章目录题目描述创建数据库使用数据库创建三个表外码的表示形式结果展示题目描述 – 新建 “图书管理数据库" – 其中包含三个关系 – 图书(编号,图书名,作者,出版社,类型,单价) – 借阅…

Golang学习——基于vscode安装go环境

环境介绍 Linux x86_64 vscode 1.63.2 部署流程 下载并部署go安装包 根据实际环境,直接在go官网下载相应的编译好的二进制安装包即可: wget https://golang.google.cn/dl/go1.19.3.linux-amd64.tar.gz下载完成后解压安装包,然后将压缩包…

空域图像增强-图像灰度变换

1.图像灰度变换。自选一张图片,完成以下图像处理:①显示图像的灰度直方图;②直方图均衡化,对比变化前后的图像和灰度直方图;③对图像进行线性灰度变换,对某部分灰度值进行扩展,压缩其它灰度值区…

【发表案例】智能物联网类SCIEI,仅25天录用,计算机领域必投SCI快刊,12月截稿

【期刊简介】3.5-4.0,JCR2区,中科院3区 【检索情况】SCI&EI双检,正刊 【征稿领域】基于人工智能的工业物联网智能传感器 【参考周期】3个月左右 【截稿日期】2022年12月30日 【期刊简介】2.0-3.0,JCR3区,中科院…

unable to find valid certification path to requested target

调用https接口时出现该异常, Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 原因是可以看上图…

介绍一款特别好用的java反编译工具jd-gui

目录 写在前面 开始 写在前面 之前用过另一款java反编译工具jad 但是这个工具有个问题就是对于一些java8的新特性,比如lambda表达式是解析不出来的,更不用说java9和java17了。关于这款工具的使用方法就不再这里赘述了,如果你感兴趣可以在网…

8个关于 Promise.then 和 Promise.catch 的面试题,一定要掌握

前面,我们要讨论了 Promise 在异步编程中的执行,错过的朋友可以直接点击《10 个 JavaScript Promise 的面试题》这篇文章进行查看。 在今天的文章中,我们将讨论这些核心 API 用于 Promise 对象的用法。 这里我提供了10个代码片段&#xff0…

代码文档

为您的团队和您未来的自己代码文档。 Intuition 代码告诉你_怎么_做,注释告诉你_为什么_。——杰夫阿特伍德 可以通过代码文档来进一步组织代码,让其他人(以及未来的自己)更容易轻松地导航和扩展它。在完成编写代码库的那一刻就最…

【云享·人物】华为云AI高级专家白小龙:AI如何释放应用生产力,向AI工程化前行?

摘要:AI技术发展,正由应用落地阶段向效率化生产阶段演进,AI工程化能力将会不断深入业务,释放企业生产力。本文分享自华为云社区《【云享人物】华为云AI高级专家白小龙:AI如何释放应用生产力,向AI工程化前行…

通过SCADA实现KPI分析和预测性维护远比想象中简单

一、前言 随着工业发展的不断进步,越来越多的企业开始注重KPI分析和预测性维护。通过数据分析实现智能制造已经成为不可缺少的环节。制定并分析关键绩效指标(KPI)是实现数据分析战略的重要一步,因为只有跟踪这些关键绩效指标才能…

【自然语言处理(NLP)】基于Bi-DAF的机器阅读理解

【自然语言处理(NLP)】基于Bi-DAF的机器阅读理解 作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学…

Flume环境搭建

1、新建一个专门放文件的目录:mkdir /export/server 2、将Flume的安装包上传到/export/server目录并解压,重命名: tar -zxvf apache-flume-1.8.0-bin.tar.gz -C /export/server mv apache-flume-1.8.0-bin flume 3、修改flume-env.sh文件…

威尔士和英格兰同属英国,但为啥还要在世界杯上进行PK?

聊到威尔士VS英格兰队的比赛,那就不得不普及一个足球常识啊。当我们打开英国的地图,你会发现有四个地区英格兰,苏格兰,威尔士和北爱尔兰都是属于英国的。我们还会常常看到英格兰,苏格兰,威尔士和北爱尔兰四…

FPGA控制W5500完成UDP环回测试

FPGA控制W5500完成UDP环回测试1 前言2 前期准备3 W5500寄存器描述4 W5500 环回测试4.1 W5500初始化4.1.1 通用寄存器初始化4.1.2 socket寄存器初始化4.2 W5500数据接收4.3 W5500数据发送4.4 数据环回5 总结&#x…

Android: SimpleAdapter+GridView 简单图片展示

1:原理解析: 一个xml放总布局,一个xml放适配器要加载的模板(我喜欢这样理解); java中写适配事件; 2:目录: 3:主布局:最重要的是要放一个GridView …

ByteX-shrink_r源码解析

背景 为什么要对R文件内联处理? 这里首先说一下Android R文件的产生,对于Android开发者我们都知道,当我们要使用要使用一些布局文件,drawable等其他资源时,可以直接用 R.id. R.drawble.等直接使用,而这个…

易基因科技|单细胞甲基化测序低至2500元/样

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。12月活动来袭~ 限时特惠!单细胞甲基化测序低至2500元/样! 易基因高通量单细胞DNA甲基化测序:单细胞DNA甲基化组学研究很大程度上受制于建库…

定时执行专家 —— 使用网络唤醒功能实现远程开机

目录 ◆ 关于网络唤醒 ◆ 定时执行专家 - 远程开机功能 - 设置方法 ◆ 使用网络唤醒实现远程开机的一些前提条件 ◆ 关于网络唤醒 Wake-on-LAN简称WOL或WoL,中文多译为“网上唤醒”、“远程唤醒”技术。WOL是一种技术,同时也是该技术的规范标准&…

CSS自定义属性与前端页面的主题切换

基于级联变量的CSS自定义属性,已经出来很多年了。 虽然有less、sass等预处理器大行其道,但是自定义属性也有它的特点和用处,诸如在js中读写、作用域设置等等,在处理UI主题切换等功能上也发挥着很大的作用。 自定义属性 CSS自定义…