Python接口测试数据库封装实现原理

作者:全栈测试开发日记 时间:2024-01-27 11:19:46 

引言

做接口测试的时候,避免不了操作数据库。因为数据校验需要,测试数据初始化需要、一些参数化场景需要等。

数据库操作框架设计

这里主要操作mysql数据库,整体思路:

Python接口测试数据库封装实现原理

封装实现

具体代码实现:


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()

运行结果:

Python接口测试数据库封装实现原理

为了方便演示,先注释删除数据的sql,再执行程序:

Python接口测试数据库封装实现原理

来源: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
  • asp之家 网络编程 m.aspxhome.com