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实现设置windows桌面壁纸代码分享
Mar 28 Python
python利用MethodType绑定方法到类示例代码
Aug 27 Python
Python使用tkinter库实现文本显示用户输入功能示例
May 30 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
pymongo中group by的操作方法教程
Mar 22 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
Python小整数对象池和字符串intern实例解析
Mar 21 Python
keras自定义回调函数查看训练的loss和accuracy方式
May 23 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 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
最简单的PHP程序--记数器
2006/10/09 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
PHP实现微信公众平台音乐点播
2014/03/20 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
PHP二维索引数组的遍历实例分析【2种方式】
2019/06/24 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
Javascript this关键字使用分析
2008/10/21 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
基于django和dropzone.js实现上传文件
2020/11/24 Python
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
好的演讲稿开场白
2013/12/30 职场文书
打架检讨书50字
2014/01/11 职场文书
党风廉政建设调研报告
2015/01/01 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
金砖之国观后感
2015/06/11 职场文书
利用Python实现模拟登录知乎
2022/05/25 Python