28、pytest实战:获取多用户鉴权

前提

测试过程中有用户体系,例如包括管理员、商家、用户角色,不同测试用例需要使用不同角色来操作,操作权限根据用户的鉴权来判断实现。

技能点

  • 建立全局变量文件,保存账号相关信息
  • 获取鉴权信息变为module级别fixture,同一module级别只请求一次鉴权

代码实现

# 目录
└─monitor_token│  __init__.py│├─case│  │  __init__.py│  ││  └─monitor_token│          conftest.py│          test_get_token.py│          __init__.py│└─datauserinfo.py

__init__.py全是空文件,无内容

# content of conftest.py
import pytest
from monitor_token.data.userinfo import project_info@pytest.fixture(scope='package')
def get_token():token_dict = {}get_token_url = 'http://192.168.1.40/api/cityos/sso/web/v2/user/login'headers = {'Content-Type':'application/json',}user_info = project_info['test']['user_info']for key, value in user_info.items():body = {'username': value[0],'password': value[1],'tenantId':'1'}# req = requests.post(url, body, headers=headers)token_dict[key] = 'Bearer-' + str(value[0]) + "-" + str(value[1])return  token_dict
# content of test_get_token.py
import pytestclass TestGetToken:def test_get_manager_token(self, get_token):token = get_token['管理员']print('管理员token:'+token)assert 1def test_get_saler_token(self, get_token):token = get_token['商家']print('商家token:' + token)assert 1def test_get_cus_token(self, get_token):token = get_token['顾客']print("顾客token:" + token)assert 1
# content of userinfo.py
import time
import sysproject_info = {'test':{'app_base_url':'http://192.168.1.50','user_info':{'管理员':('manageuser','testpassword'),'商家':('saleruser','salerpassword'),'顾客':('cususer','cususerpassword'),},'database_info':{'url':'','username':'','password':'','port':3306,'db_name':{'测试创新应用':'',}}},'prod':{'app_base_url':'http://192.168.1.40','user_info':{'管理员':('testuser','testpassword'),'商家':('saleruser','salerpassword'),'顾客':('cususer','cususerpassword'),},'database_info':{'url':'','username':'','password':'','port':3306,'db_name':{'生产创新应用':'',}}}
}

场景应用

用例文件夹下的conftest.py中实现获取token的fixture,测试用例中直接获取该fixture,并根据用户名称来使用。fixtrue设置作用域为包级,只能包内测试用例执行结束后,才会销毁,可以保证一次测试,只请求了一次token。

在这里插入图片描述

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

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

相关文章

Kafka在微服务架构中的应用:实现高效通信与数据流动

微服务架构的兴起带来了分布式系统的复杂性,而Kafka作为一款强大的分布式消息系统,为微服务之间的通信和数据流动提供了理想的解决方案。本文将深入探讨Kafka在微服务架构中的应用,并通过丰富的示例代码,帮助大家更全面地理解和应…

鸿蒙开发—学习声明式UI

基本UI描述 ArkTS通过装饰器Component和Entry装饰struct关键字声明的数据结构,构成一个自定义组件。自定义组件中提供了一个build函数,开发者需在该函数内以链式调用的方式进行基本的UI描述,UI描述的方法请参考UI描述规范。 基本概念 stru…

UWB的matlab仿真源码

作品详细文章与下载链接 第一部分:TR-UWB信号的产生和调制 简介 该实践涉及使用 MATLAB 生成和调制 TR-UWB 信号。超宽带信号是一类在频谱中具有宽带而不是窄带的信号信号,具有时间宽度的脉冲产生它。在本次实践中,MATLAB 程序是开发用于生成基带 TR-UWB 信号,我们用…

关于idea2023创建项目时怎么使用jdk8

最近用idea创建项目时,发现java的版本只能选择17或22,springboot的版本只能选择3.2.0: 那么,如果我们要用jdk8和springboot2的话,那要怎么做呢? 不急,我们先点击create创建项目,然后…

Spring--10--Spring Bean的生命周期

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.Spring Bean1.1 什么是 Bean简而言之,bean 是由 Spring IoC 容器实例化、组装和管理的对象。 1.2 Spring框架管理Bean对象的优势 2.Bean的生命周期实例…

消息队列的基本概念以及作用

目录 一、消息队列概述1.1 什么是消息队列1.2 消息队列的作用和优势1.2.1 解耦1.2.2 异步1.2.3 削峰 1.3 引入消息队列带来的问题1.4 典型应用场景 参考资料 一、消息队列概述 1.1 什么是消息队列 消息队列(Message Queue, MQ)是一种用于在应用程序之间或不同组件之间进行异步…

使用 Tailwind CSS 完成导航栏效果

使用 Tailwind CSS 完成导航栏效果 本文将向您介绍如何使用 Tailwind CSS 创建一个漂亮的导航栏。通过逐步演示和示例代码,您将学习如何使用 Tailwind CSS 的类来设计和定制导航栏的样式。 准备工作 在开始之前,请确保已经安装了 Tailwind CSS。如果没…

网络编程值UDP

1. 知识点 1.1 TCP和UDP优缺点 1.2 UDP通信流程 1.2.1 服务端 1. 创建udp套接字 2. 初始化服务端网络地址结构 3. 绑定服务端网络地址 4.创建结构体用来存储客户端网络地址结构 5. 接收客户数据 1.2.2 客户端 1. 创建udp套接字 2. 初始化服务器网络地址结构 3. 客户端先发送数…

Java线程安全问题及其三大线程同步“锁”方案

文章目录 一、 线程安全问题概述二、线程安全问题的demo演示三、线程同步方案四、线程同步代码块五、同步方法六、Lock锁七、附录—多线程常用方法 在实际开发过程中,使用线程时最重要的一个问题非线程安全问题莫属。这篇博客会带你由浅入深的初步了解该问题&#x…

nodejs微信小程序+python+PHP的基于大数据的家电销售分析系统设计与实现-计算机毕业设计推荐django

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

【爬虫基础】自动化工具 Selenium 的使用

目录 前言 Selenium 的基本使用 (1)使用 Selenium 打开网页 (2)使用 Selenium 模拟登录 (3)使用 Selenium 模拟翻页 Selenium 的进阶使用 (1)使用 Chrome 开发者模式 &#…

贝锐花生壳3大安全能力,保障网络服务安全远程连接

在没有公网IP的情况下,使用内网穿透工具,将本地局域网服务映射至外网,虽然高效快捷,但信息安全也是不可忽略的方面。 对此,贝锐花生壳提供了多维度的安全防护能力,满足不同场景下用户安全远程访问内网服务的…