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

news2025/1/11 5:57:47

前言

我们在使用自动化测试框架的时候,经常会遇到一个需求,希望在全局用例中,仅登录一次,后续所有的用例自动带上请求头部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():
    """登录方法"""
    # 调用登录方法,返回token
    return str(uuid.uuid4())  # noqa


@pytest.fixture(scope="session", autouse=True)
def login_first(requests_session):
    """全局仅一次登录, 更新session请求头部"""
    # 调用登录方法,获得token
    token = login()
    headers = {
        "Authentication": f"Bearer {token}"
    }
    requests_session.headers.update(headers)

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

config:
  name: get

teststeps:
-
  name: get
  request:
    method: GET
    url: http://httpbin.org/get
  validate:
    - eq: [status_code, 200]

test_post_demo.yml

config:
  name: post示例
  variables:
    username: test
    password: "123456"

teststeps:
-
  name: post
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      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.coloradmin.cn/o/50526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计Django的实验填报管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

OSSID: Online Self-Supervised Instance Detection by (And For) Pose Estimation

许多机器人操作算法都需要 实时目标姿态估计。然而,最先进的目标姿态估计方法是针对一组特定的对象进行训练的;因此,这些方法需要 重新训练 以估计每个新对象的姿势。本文提出了 OSSID 框架,利用 慢速零样本 姿态估计器 来 自监督…

OpenGL 图像色调

目录 一.OpenGL 图像色调 1.IOS Object-C 版本1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 图像色调 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录…

Spring | IOC技术之Bean的配置与实例化

👑 博主简介:    🥇 Java领域新星创作者    🥇 阿里云开发者社区专家博主、星级博主、技术博主 🤝 交流社区:BoBooY(优质编程学习笔记社区) 文章目录Bean的基础配置1、id 与 cla…

家电生产线数控机床上下料长臂机器人组设计

目录 摘 要 I ABSTRCT II 前言 III 1.长臂机器人组概况 1 1.1国内外发展状况 1 1.2研究意义 2 1.2.1长臂机器人组研究现状 2 1.2.2长臂机器人组研究方向 3 1.3本课题意义和目的 4 1.3.1本课题的意义 4 1.3.2本课题的目的 4 2.长臂机器人组的组成分类及设计分析 6 2.1 长臂机器人…

【车载开发系列】UDS诊断---诊断故障清除($0x14)

【车载开发系列】UDS诊断—诊断故障清除($0x14) UDS诊断---诊断故障清除($0x14)【车载开发系列】UDS诊断---诊断故障清除($0x14)一.概念定义二.参数说明三.清除内容方式1)清除内容2)…

python接口自动化44- requests 库使用 hook 机制

前言 requests 是 Hooks 即钩子方法,用于在某个框架固定的某个流程执行是捎带执行(钩上)某个自定义的方法。 requests 库只支持一个 response 的钩子,即在响应返回时可以捎带执行我们自定义的某些方法。 可以用于打印一些信息&am…

Unity引擎开发-无人机模拟飞行实现

目 录 摘 要 I Abstract II 一、 绪论 1 (一) 研究背景和研究意义 1 (二) 国内外研究现状 1 (三) 论文组织结构 2 二、 3D游戏技术的知识系统 2 (一) 3D图形库 2 (二&…

UML概述及UML类图详解

一 UML介绍 UML这三个字母的全称是Unified Modeling Language,翻译就是统一建模语言,是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 UML 本身是一套符号的规定,就像数学符号和化学符…

Linux——md5命令

文章目录介绍选项使用案例生成文件md5值文本模式或二进制模式md5值重定向重定向追加md5校验实际开发场景介绍 md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相…

CTGU操作系统

CTGU操作系统第一章第二章 Operating-System structures操作系统结构第三章自己看,懒得写了,我也不知道为啥划重点他要把所有PPT过一遍,离谱第一章 第二章 Operating-System structures操作系统结构 第三章自己看,懒得写了&#x…

【能效管理】电力监控系统在某商业数据中心的应用分析

摘要:在电力系统的运行过程中,变电站作为整个电力系统的核心,在保证电力系统可靠的运行方面起着至关重要的作用,基于此需对变电站监控系统的特点进行分析,结合变电站监控系统的功能需求,对变电站电力监控系…

Yoshua Bengio:我的一生

文 | 智商掉了一地2018 年图灵奖获得者、AI 先驱、深度学习三巨头之一、对抗生成网络 GAN、标志性的银灰卷发和浓眉,如果还没猜到的话,当你看到这个封面,一定就会意识到自己在学习的路上,已经或间接或直接地拜读过大佬的著作了。看…

云原生主题学习月|成为社区领学员,解锁专属奖励及超多数量社区学员奖品!

CSDN 已上线亚马逊云科技超过 60 门中文数字化培训课程,希望为学习者提供亚马逊云科技基础技能知识和最佳实践。 每门课程时长从十分钟到几小时不等,由亚马逊云科技专家打造,其中包括最受欢迎的《亚马逊云科技云从业者必修知识》&#xff0c…

为什么 FindFirstFile 会查找短文件名?

FindFirstFile 函数会尝试匹配短文件名和长文件名。这可能会产生一些令人惊讶的结果。例如,如果你查找 “*.htm” ,那么它会返回给你文件 “x.html” ,因为它的短文件名是 “X~1.HTM”。 这确实比较令人感到意外。 为什么 FindFirstFile 会匹…

行业重磅!神策可视化全埋点正式支持 Flutter 平台!

Flutter 框架推出至今,已经在超过 50 万个应用中使用,从 2019 年到现在一直保持着强劲的增长趋势。优秀的性能、跨平台能力和活跃的技术社区使得其愈发受到广大开发者的青睐。而随着 Flutter 的普及和广泛应用,越来越多的企业和开发者对自动高…

答题小程序源码题目选项随机打乱功能分析

答题小程序随机打乱功能分析 通过多年的开发经验及实际使用用户的反馈,答题小程序源码完善了题库选项随机打乱功能,该功能的出现有效避免了用户在答题时不经审题、思索而凭机记忆机械化做出选择的弊端。 那么题库选项随机打乱功能具体是什么样的的呢&…

计算机组成原理期末复习第四章-1(唐朔飞)

计算机组成原理期末复习第四章-1(唐朔飞) ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,csdn首发! 😘系列专栏:java学习 💻首发时间:&am…

Linux零基础快速入门篇

推荐教程:Linux零基础快速入门到精通 操作系统概述 操作系统是计算机软件的一种,它主要负责:作为用户和计算机硬件之间的桥梁,调度和管理计算机硬件进行工作而计算机,如果没有操作系统,就是一堆无法使用的…

嵌入式系统的开发概述

文章目录嵌入式系统开发基本流程嵌入式软件开发嵌入式软件开发的特点和技术挑战嵌入式软件开发环境交叉开发环境软件模拟环境目标板与评估板嵌入式软件开发的可移植性和可重用性嵌入式系统开发基本流程 面向具体应用的嵌入式开发决定了嵌入式开发的方法、流程各有不同&#xf…