Python接口自动化核心模块 - 数据库操作和日志

进行接口测试时,我们需要连接到数据库中,对数据源进行备份、还原、验证等操作。

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语句

关闭游标

关闭连接


代码实现:

python 复制代码
# 创建数据库连接对象

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 连接数据库端口号


password="xxxxx":密码

charset="utf8mb4":建立连接的编码

cursorclass=pymysql.cursors.DictCursor:设置返回数据类型    返回字典



# 建立游标

cursor = conn.cursor()

# 执行核心SQL语句


# 关闭游标

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

日志输出模式

输出到控制台

输出到文件

日志格式

指定输出的日志的格式和内容常见的格式有:

python 复制代码
%(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模块

第二步:设置日志等级

第三步:配置日志处理器、日志格式;日志处理器:控制日志的打印模式

第四步:打印日志

01、logging模块处理流程

接口测试框架实现日志收集功能

编写日志配置函数代码

这个函数配置了输出日志到控制台和文件,并且设置了日志打印格式

python 复制代码
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 中调用这个函数,完成日志的初始化

python 复制代码
from utils import logging_init



# 初始化日志配置函数

logging_init()



# 测试打印日志

import logging

logging.info("测试info级别的日志打印")

logging.debug("测试debug级别的日志打印") #不会打印

在api. init .py 初始化日志配置的原因:

execute执行script中的用例,script中的用例是调用api 的接口实现接口测试,按照模块语法,调用模块时,会自动执行模块下的 init .py 代码

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
真智AI9 分钟前
利用 Claude Opus 4 自动化 GitHub 工作流:从安装到实战详解
运维·自动化·github
liulun10 分钟前
在浏览器中使用SQLite(官方sqlite3.wasm)
数据库·sqlite·wasm
凛铄linshuo41 分钟前
爬虫简单实操2——以贴吧为例爬取“某吧”前10页的网页代码
爬虫·python·学习
牛客企业服务44 分钟前
2025年AI面试推荐榜单,数字化招聘转型优选
人工智能·python·算法·面试·职场和发展·金融·求职招聘
胡斌附体1 小时前
linux测试端口是否可被外部访问
linux·运维·服务器·python·测试·端口测试·临时服务器
IT项目管理1 小时前
达梦数据库DMHS介绍及安装部署
linux·数据库
你都会上树?1 小时前
MySQL MVCC 详解
数据库·mysql
大春儿的试验田2 小时前
高并发收藏功能设计:Redis异步同步与定时补偿机制详解
java·数据库·redis·学习·缓存
likeGhee2 小时前
python缓存装饰器实现方案
开发语言·python·缓存
项目題供诗2 小时前
黑马python(二十五)
开发语言·python