Python接口测试数据库封装实现原理
作者:全栈测试开发日记 时间:2024-01-27 11:19:46
引言
做接口测试的时候,避免不了操作数据库。因为数据校验需要,测试数据初始化需要、一些参数化场景需要等。
数据库操作框架设计
这里主要操作mysql数据库,整体思路:
封装实现
具体代码实现:
import pymysql
import json
class OperateMysql(object):
def __init__(self):
# 数据库初始化连接
self.connect_interface_testing = pymysql.connect(
"localhost",
"root",
"123456",
"test",
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
# 创建游标操作数据库
self.cursor_interface_testing = self.connect_interface_testing.cursor()
def select_first_data(self, sql):
"""
查询第一条数据
"""
try:
# 执行 sql 语句
self.cursor_interface_testing.execute(sql)
except Exception as e:
print("执行sql异常:%s"%e)
else:
# 获取查询到的第一条数据
first_data = self.cursor_interface_testing.fetchone()
# print(first_data)
# 将返回结果转换成 str 数据格式,禁用acsii编码
first_data = json.dumps(first_data,ensure_ascii=False)
# self.connect_interface_testing.close()
return first_data
def select_all_data(self,sql):
"""
查询结果集
"""
try:
self.cursor_interface_testing.execute(sql)
except Exception as e:
print("执行sql异常:%s"%e)
else:
first_data = self.cursor_interface_testing.fetchall()
first_data = json.dumps(first_data,ensure_ascii=False)
# self.connect_interface_testing.close()
return first_data
def del_data(self,sql):
"""
删除数据
"""
res = {}
try:
# 执行SQL语句
result = self.cursor_interface_testing.execute(sql)
# print(result)
if result != 0:
# 提交修改
self.connect_interface_testing.commit()
res = {'删除成功'}
else:
res = {'没有要删除的数据'}
except:
# 发生错误时回滚
self.connect_interface_testing.rollback()
res = {'删除失败'}
return res
def update_data(self,sql):
"""
修改数据
"""
try:
self.cursor_interface_testing.execute(sql)
self.connect_interface_testing.commit()
res = {'更新成功'}
except Exception as e:
self.connect_interface_testing.rollback()
res = {'更新删除'}
return res
def insert_data(self,sql,data):
"""
新增数据
"""
try:
self.cursor_interface_testing.execute(sql,data)
self.connect_interface_testing.commit()
res = {data,'新增成功'}
except Exception as e:
res = {'新增失败',e}
return res
def conn_close(self):
# 关闭数据库
self.cursor_interface_testing.close()
if __name__ == "__main__":
# ()类的实例化
om = OperateMysql()
# 新增
data = [{'id': 1, 'name': '测试', 'age': 15}, {'id': 2, 'name': '老王', 'age': 10}, {'id': 3, 'name': '李四', 'age': 20}]
for i in data:
i_data = (i['id'],i['name'],i['age'])
insert_res = om.insert_data(
"""
INSERT INTO test_student (id,name,age) VALUES (%s,%s,%s)
""",i_data
)
print(insert_res)
# 查询
one_data = om.select_first_data(
"""
SELECT * FROM test_student;
"""
)
all_data = om.select_all_data(
"""
SELECT * FROM test_student;
"""
)
print(one_data)
# all_data字符串类型的list转list
print("查询总数据:%s",len(json.loads(all_data)),"分别是:%s",all_data)
# 修改
update_data = om.update_data(
"""
UPDATE test_student SET name = '王五' WHERE id = 1;
"""
)
print(update_data)
# 删除
del_data = om.del_data(
"""
DELETE FROM test_student WHERE id in (1,2,3);
"""
)
print(del_data)
# 关闭游标
om.conn_close()
运行结果:
为了方便演示,先注释删除数据的sql,再执行程序:
来源:https://www.cnblogs.com/liudinglong/p/12819078.html
标签:Python,数据库,封装
0
投稿
猜你喜欢
Python过滤掉numpy.array中非nan数据实例
2021-08-25 14:47:44
python中尾递归用法实例详解
2023-10-09 06:46:15
python处理圆角图片、圆形图片的例子
2021-06-08 15:20:15
python获取linux和windows系统指定接口的IP地址的步骤及代码
2023-04-22 08:22:21
你的网站使用了微格式了么
2009-05-21 12:10:00
基于Python实现打哈欠检测详解
2021-12-10 06:50:45
python发送邮件实例分享
2021-07-17 23:14:23
机器学习python实战之手写数字识别
2021-06-29 03:07:07
Golang 内存模型The Go Memory Model
2024-05-25 15:16:50
JS事件在IE与FF中的区别详细解析
2023-09-24 23:02:35
Python在线和离线安装第三方库的方法
2023-08-24 19:37:11
python利用faker库批量生成测试数据
2021-04-16 10:34:42
Python爬虫如何应对Cloudflare邮箱加密
2023-10-16 22:25:35
Python替换NumPy数组中大于某个值的所有元素实例
2021-11-11 07:36:20
python opencv 批量改变图片的尺寸大小的方法
2021-09-13 12:55:01
关于Python dict存中文字符dumps()的问题
2022-08-22 17:53:17
Python中如何给字典设置默认值
2023-09-21 00:15:32
PHP单例模式简单用法示例
2023-11-18 19:45:41
Mysql表的约束超详细讲解
2024-01-20 07:43:11
Access命令行参数
2007-08-23 15:35:00