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


Posted in Python onMay 09, 2020

引言

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

数据库操作框架设计

这里主要操作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接口测试数据库封装实现原理

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python反转序列的方法实例分析
Mar 21 Python
Matplotlib 生成不同大小的subplots实例
May 25 Python
python+numpy+matplotalib实现梯度下降法
Aug 31 Python
Python使用googletrans报错的解决方法
Sep 25 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 Python
Python文件操作方法详解
Feb 09 Python
python logging.info在终端没输出的解决
May 12 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
Python如何给函数库增加日志功能
Aug 04 Python
Python logging自定义字段输出及打印颜色
Nov 30 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
解决pycharm安装第三方库失败的问题
May 09 #Python
Python Json数据文件操作原理解析
May 09 #Python
利用Python如何实时检测自身内存占用
May 09 #Python
如何通过Python3和ssl实现加密通信功能
May 09 #Python
详解Django配置JWT认证方式
May 09 #Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
May 08 #Python
win10从零安装配置pytorch全过程图文详解
May 08 #Python
You might like
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
微信支付扫码支付php版
2016/07/22 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
Javascript 引擎工作机制详解
2016/11/30 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
form表单序列化详解(推荐)
2017/08/15 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
Python中的作用域规则详解
2015/01/30 Python
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
python2.7的编码问题与解决方法
2016/10/04 Python
Python中 Lambda表达式全面解析
2016/11/28 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
Python中Numpy mat的使用详解
2019/05/24 Python
python之生成多层json结构的实现
2020/02/27 Python
python Matplotlib模块的使用
2020/09/16 Python
python openCV自制绘画板
2020/10/27 Python
吃透移动端 Html5 响应式布局
2019/12/16 HTML / CSS
爱护公共设施标语
2014/06/24 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
新党章心得体会
2014/09/04 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
消夏晚会主持词
2015/06/30 职场文书
民主生活会主持词
2015/07/01 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
Python正则表达式中flags参数的实例详解
2022/04/01 Python
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL