当前位置:网站首页>进行接口测试时,连接数据库,对数据源进行备份、还原、验证操作
进行接口测试时,连接数据库,对数据源进行备份、还原、验证操作
2022-07-27 16:23:00 【测试小鬼】
进行接口测试时,我们需要连接到数据库中,对数据源进行备份、还原、验证等操作。
一、Python连接数据库常见模块
- MysqlDB
- python2时代最火的驱动库。基于C开发,对windows平台不友好。现在已经进入python3时代,基本不再使用
- MysqlClient
- mysqldb的衍生版本,完全兼容python3.它是重量级Web开发框架Django中ORM功能依赖工具
- Pymysql
- 纯Python实现的驱动,性能比MysqlDb差,但是安装简单,容易使用
- SQLAlchemy
- 即支持原生SQL也支持ORM的库
我们以pymysql为例
二、Pymysql使用方法
安装方法:pip install pymysql
Pymsyql使用流程
- 获取连接
- 获取游标 --游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作
- 执行SQL语句
- 关闭游标
- 关闭连接


代码实现:
# 创建数据库连接对象
connect =
pymysql.Connect(
host='xxxxx',
port=3306,
user='root',
password='XXXX',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
connect:接收Pymysql.connect方法返回的对象,建立连接对象
pymysql.Connect 建立连接方法
host=XXXX 连接数据库服务器
port=3306 连接数据库端口号
user="root":用户名
password="xxxxx":密码
charset="utf8mb4":建立连接的编码
cursorclass=pymysql.cursors.DictCursor:设置返回数据类型 返回字典
# 建立游标
cursor = conn.cursor()
# 执行核心SQL语句
cursor.execute("select version();")
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
查询订单库
得到一个游标对象
cursor = connect.cursor()
查询库名加表名
mtxshop_trade.es_order
cursor.execute("SELECT order_id,trade_sn FROM mtxshop_trade.es_order WHERE order_id=47050 OR order_id=47049")
data = cursor.fetchall() #得到查询的所有结果
cursor.close()#关闭游标对象
三、日志的基本概念
提到日志,无论是写框架代码还是业务代码,都离不开日志的记录,他能给我们定位问题带来极大的帮助,最佳的做法是使用内置的logging模块, 因为 logging 模块给开发者提供了非常丰富的功能。
日志级别
日志级别是为了控制打印日志的信息程度的
首先,配置日志模块时,需要先设置日志模块的日志等级
例如,如果设置为INFO级别,那么打印日志用DEBUG就不会输出日志。
- DEBUG
- INFO
- WARNING
- ERROR
- CRITICAL
日志输出模式
- 输出到控制台
- 输出到文件
日志格式
指定输出的日志的格式和内容常见的格式有:
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息logging使用流程
- 第一步:实例化logging模块
- 第二步:设置日志等级
- 第三步:配置日志处理器、日志格式;日志处理器:控制日志的打印模式
- 第四步:打印日志
logging模块处理流程

接口测试框架实现日志收集功能
编写日志配置函数代码
这个函数配置了输出日志到控制台和文件,并且设置了日志打印格式
def logging_init():
# 初始化日志器
logger = logging.getLogger()
# 设置日志等级
logger.setLevel(logging.INFO)
# 添加控制器
stream_handler = logging.StreamHandler()
file_handler = logging.handlers.TimedRotatingFileHandler(config.BASE_DIR + "/logs/lagou_log.log", when='h',
interval=1,backupCount=3, encoding="utf-8")
# 设置日志格式
fmt = "%(asctime)s %(levelname)s [%(name)s] [ %(filename)s %(funcName)s % (lineno)d ] %(message)s "
formatter = logging.Formatter(fmt)
# 将日志格式添加到控制器
stream_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
# 将控制器添加到日志器
logger.addHandler(stream_handler)
logger.addHandler(file_handler)
return logger然后在api. init .py 中调用这个函数,完成日志的初始化
from utils import logging_init
# 初始化日志配置函数
logging_init()
# 测试打印日志
import logging
logging.info(" 测 试 info 级 别 的 日 志 打 印 ")
logging.debug("测试debug级别的日志打印") #不会打印在api. init .py 初始化日志配置的原因:
execute执行script中的用例,script中的用例是调用api 的接口实现接口测试,按照模块语法,调用模块时,会自动执行模块下的 init .py 代码
后续,只需要在需要打印日志的模块,导入logging安装包,就可以输出我们配置好日志格式和日志等级的日志信息了

最后我也整理了一些软件测试学习资料,对于学软件测试的小伙伴来说应该会很有帮助,为了更好地整理每个模块
需要的私信我关键字【555】免费获取哦 注意关键字是:555
全套软件测试自动化测试教学视频

300G教程资料下载【视频教程+PPT+项目源码】

全套软件测试自动化测试大厂面经

边栏推荐
- Intelligent insomnia therapeutic instrument product dlt8p68sa Jericho
- Interceptor interceptor
- 连接查询和子查询
- EN 1155 building hardware swing door opener - CE certification
- Wechat payment and payment callback
- MySQL 04 高级查询(二)
- Was not registered for synchronization because synchronization is not active[resolved]
- 地图找房的实例
- Here are all the MySQL interview questions you can't expect (the latest version of 2022)
- Whole body multifunctional massage instrument chip-dltap602sd
猜你喜欢

Redis annotation

Unity-显示Kinect深度数据

USB rechargeable hand warmer chip dltap602sc Jericho

自控原理学习笔记-系统稳定性分析(1)-BIBO稳定及Routh判据

Led learning eye protection table lamp touch chip-dlt8t10s-jericho

Nodejs template engine EJS

Mini washing machine touch chip dlt8ma12ts Jericho

Uploading and downloading of files

Kinect for Unity3D——BackgroundRemovalDemo学习

Use mobaxtermto establish a two-tier springboard connection
随机推荐
CMD 命令
Infrared hyperspectral survey
Talking about JVM (frequent interview)
Interceptor interceptor
Product recommendation and classified product recommendation
Unity学习笔记——物体移动六种常见函数
MySQL 03 高级查询(一)
Idea 2020.1 Community Edition download experience
Kinect for Unity3d----KinectManager
你想得到想不到的MySQL面试题都在这了(2022最新版)
商品评论信息与评论信息分类
Nodejs 模板引擎ejs
`this.$emit` 子组件给父组件传递多个参数
【微信小程序】项目实战—抽签应用
功率单位(power control)
MySQL set validate_ Adding skip grant tables after password=off failed to start the service
Overview of Baidu map technology, and application development of basic API and webapi
怎样产生标准分布或高斯分布的随机数
Interceptor拦截器
pygame飞机大战游戏背景实现