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操作SQLite数据库及文件操作详解
Sep 22 Python
详解Django+Uwsgi+Nginx的生产环境部署
Jun 25 Python
python对象与json相互转换的方法
May 07 Python
让你Python到很爽的加速递归函数的装饰器
May 26 Python
对于Python深浅拷贝的理解
Jul 29 Python
python集合常见运算案例解析
Oct 17 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
python使用rsa非对称加密过程解析
Dec 28 Python
使用python的turtle函数绘制一个滑稽表情
Feb 28 Python
使用python处理题库表格并转化为word形式的实现
Apr 14 Python
python闭包与引用以及需要注意的陷阱
Sep 18 Python
python实现经纬度采样的示例代码
Dec 10 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的explode和implode的使用说明
2011/07/17 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
2013/11/28 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
2018/08/27 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
python实现websocket的客户端压力测试
2019/06/25 Python
环境科学专业个人求职信
2013/09/26 职场文书
广告设计专业自荐信范文
2013/11/14 职场文书
应用心理学个人的求职信
2013/12/08 职场文书
高二地理教学反思
2014/01/24 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
2014年公司工作总结
2014/11/22 职场文书
2015年教师党员公开承诺书
2015/01/22 职场文书
中学教师个人总结
2015/02/10 职场文书
MYSQL如何查看进程和kill进程
2022/03/13 MySQL
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python
Python 文字识别
2022/05/11 Python
python数字图像处理:图像的绘制
2022/06/28 Python
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers