当前位置: 首页 > news >正文

Pytest+requests进行接口自动化测试9.0(redis + excal文件的使用)

Redis的使用

  • 一、Redis简介
  • 二、下载Redis
    • 从单节点服务器中获取数据
    • 从集群环境中获取数据
  • 三、excel文件的使用

一、Redis简介

Redis是一个基于内存的 key-value 结构数据库,主要是在内存中保存数据,加速数据访问的。

Redis基本介绍

二、下载Redis

下载工具:Redis Desktop Manager

建立连接

在这里插入图片描述

获取key值

在这里插入图片描述

从单节点服务器中获取数据

在这里插入图片描述

配置文件config.yaml 文件里添加 redis 配置

redis:host: 127.0.0.1port: 6379username:password:db: 0

在这里插入图片描述

读取 config.yaml 文件中的 redis 配置

    def get_section_redis(self, option):"""快捷方法:获取redis配置"""return self.get('redis', option)

在这里插入图片描述

创建redis连接 与 读取对应key值的数据

class RedisClient:"""从redis中读取,设置相关数据"""def __init__(self):self.conf = OperationYaml()self.__redis_conf = {'host':self.conf.get_section_redis('host'),'port':int(self.conf.get_section_redis('port')),'username':self.conf.get_section_redis('username'),'password':self.conf.get_section_redis('password'),'db':self.conf.get_section_redis('db'),}try:logs.info(f'连接到Redis服务器:ip:{self.__redis_conf["host"]}')pool = redis.ConnectionPool(**self.__redis_conf)self.redis_cluster = redis.Redis(connection_pool=pool)except Exception as e:logs.error(f'redis连接失败,{e}')@classmethoddef redis_except(self,e):if 'MOVED' in str(e):logs.error(f'请检查Redis是否使用了集群模式或者主从复制的情况,数据被迁移到了另外一个Redis实例上:{e}')else:logs.error(f'Redis Error:{e}')def get(self,key):"""获取Redis里面的数据:param key: Redis里面的键:return:"""try:value = self.redis_cluster.get(key)if isinstance(value, bytes):return value.decode('utf-8')return valueexcept Exception as e:self.redis_except(e)logs.error(f"从Redis中获取[{e}]失败,失败原因:{e}")raisedef set(self,key,value,ex=None):"""设置Redis的值:param key: Redis:param value: 需要设置的内容:param ex: 过期时间,单位秒(s):return:"""try:self.redis_cluster.set(name=key, value=value, ex=ex)except Exception as e:logs.redis_except(e)

从集群环境中获取数据

在这里插入图片描述

redis:startup_nodes: 172.17.33.214:6479,172.17.33.214:6380host: 127.0.0.1port: 6379username:password:db: 0

集群读取

class RedisClient:"""从redis中读取,设置相关数据"""def __init__(self):self.conf = OperationYaml()self.__redis_conf = {'host':self.conf.get_section_redis('host'),'port':int(self.conf.get_section_redis('port')),'username':self.conf.get_section_redis('username'),'password':self.conf.get_section_redis('password'),'db':self.conf.get_section_redis('db'),}redis_nodes_str = self.conf.get_section_redis('startup_nodes')self.nodes_list = []if redis_nodes_str:nodes_str_list = redis_nodes_str.split(',')print(nodes_str_list)for node_str in nodes_str_list:host, port = node_str.split(':')node_data = {'host': 'host', 'port': 'port'}self.nodes_list.append(node_data)# startup_nodes: 集群的格式[{'host':'host','port':'port'},{'host2':'host2','port2':'port2'},{},....]self.redis_cluster = RedisCluster(startup_nodes=self.nodes_list)logs.info(f"连接到Redis集群服务,host:{redis_nodes_str}")elif self.__redis_conf['host'] and self.__redis_conf['port']:try:logs.info(f'连接到Redis服务器:ip:{self.__redis_conf["host"]}')pool = redis.ConnectionPool(**self.__redis_conf)self.redis_cluster = redis.Redis(connection_pool=pool)except Exception as e:logs.error(f'redis连接失败,{e}')

pycharm向git远程仓库提交、推送和pull代码

在这里插入图片描述

在 git 里克隆 url 地址

在这里插入图片描述

点击提交,将更改的项目推送上去
在这里插入图片描述

提交并推送,在文字描述处填写此次更改内容

在这里插入图片描述

三、excel文件的使用

Python 自动化测试中 Excel 数据驱动实战:手把手教你封装一个 HandleExcel 类


  • 目标

  • 读取 Excel 表格数据

  • 获取行数、列数、单元格值

  • 写入数据回 Excel

  • 支持配置化路径管理


  • 技术栈
库名作用
xlrd读取 .xls 文件(注意:不支持 .xlsx)
xlwt写入 .xls 文件
xlutils.copy在保留原格式的基础上复制并修改 Excel

安装命令

pip install xlrd==1.2.0 xlwt xlutils

目录结构

在这里插入图片描述

  • 配置文件 setting.py

此处存放全局路径

import os
# 项目根目录
DIR_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))FILE_PATH = {'EXCEL': os.path.join(DIR_path, r'data\新建 XLS 工作表.xls')
}
  • xls文件:

在这里插入图片描述

  • 核心代码解析:HandleExcel 类

1. 导入依赖

import xlrd
import xlwt
from xlutils.copy import copy
from conf import setting
import os
from common.recordlog import logs

2. 初始化方法 init

调用 xls_obj( ) 加载 Excel 表格对象

def __init__(self, file_path=None):if file_path is not None:self.file_path = file_pathelse:self.file_path = setting.FILE_PATH['EXCEL']self.__global_table = self.xls_obj()

3. 加载 Excel 表格对象 xls_obj()

使用 os.path.splitext() 判断文件扩展名;
formatting_info=True:保留原有样式(字体、颜色等),便于后续写入时保持美观;
sheet_by_index(0):获取第一个工作表(索引从 0 开始);
不支持 .xlsx,遇到则报错并记录日志。

def xls_obj(self):if os.path.splitext(self.file_path)[-1] != '.xlsx':obj = xlrd.open_workbook(self.file_path, formatting_info=True)xls_obj = obj.sheet_by_index(0)  # 取第一个 sheetreturn xls_objelse:logs.error('Excel文件必须是.xls格式!')

4. 常用读取方法

获取行列数,nrows 和 ncols 是 xlrd 提供的属性,直接调用即可

def get_cols(self):"""获取Excel的总列数"""return self.__global_table.ncolsdef get_rows(self):"""获取Excel的总行数"""return self.__global_table.nrows

获取单个单元格值,索引从 0 开始,例如 (0,0) 表示 A1 单元格

def get_cell_value(self, row, col):return self.__global_table.cell_value(row, col)

获取一整行/列数据,返回 list 类型,可用于参数化测试

def get_each_line(self, row):return self.__global_table.row_values(row)def get_each_column(self, col):return self.__global_table.col_values(col)

5. 写入数据方法 write_xls_value

def write_xls_value(self, row, col, value):try:init_table = xlrd.open_workbook(self.file_path, formatting_info=True)copy_table = copy(init_table)sheet = copy_table.get_sheet(0)  # 修改第0个工作表sheet.write(row, col, value)copy_table.save(self.file_path)except PermissionError:logs.error('请关闭Excel文件再操作!')exit()

输出结果:

表格总行数: 6
表格总列数: 8
第一行第一列: 接口名称
B1单元格内容: /dar/user/login
http://www.dtcms.com/a/525174.html

相关文章:

  • Python+Selenium+Pytest+POM自动化测试框架封装详解
  • 大模型-模型压缩:量化、剪枝、蒸馏、二值化 (1)
  • 高中男女做那个视频网站挂机软件定制
  • 怎么查看一个网站的浏览量自豪地采用wordpress
  • 微网站建设哪里便宜wordpress仿wiki
  • 计算机网络设计:从基础到原则的体系化指南
  • 在安阳想建个网站怎么做经典的网站设计工具
  • 生物油分离及分离产物结构性质与表征
  • Android开发教程之Java入口方法介绍 Java打印 Java注释 Java变量 常量申明 变量命名规则
  • 一个新的面向东亚地区的高精度天气模拟的基准算例已开源发布
  • 宁波易通建设网站网站个人备案百度推官
  • P1928 外星密码(dfs)
  • 什么网站是最全的南通哪里做网站
  • 快速排序代码实现详解
  • 社会工程学全解析:从原理到实战
  • 基于LSTM的多变量时间序列预测创新路径
  • gofair做网站seo规范培训
  • 网站做充值和提现优化企业网站标题
  • 【 RocketMQ 全解析】分布式消息队列的架构、消息转发与快速实践、事务消息
  • k8s上配置canal用的zookeeper为什么需要用两个service?
  • 基于Springboot + vue3实现的房屋买卖平台
  • 网站设计分辨率网站遇到攻击时应该怎么做
  • date-fns 现代 JavaScript 日期实用程序库(基础篇)上
  • 调整为 dart-sass 支持的语法,将深度选择器/deep/调整为::v-deep
  • 做设计常用网站有哪些怎样注册公司流程
  • Less:让CSS开发更简单的预处理器
  • 生态文明建设网站企业管理者培训查询
  • 用腾讯云做淘宝客购物网站视频商城平台开发公司
  • ASE04-冰冻效果
  • 宁波建设业协会网站宜黄县建设局网站