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 SQLite3数据库操作类分享
Jun 10 Python
Python socket编程实例详解
May 27 Python
python用户管理系统
Mar 13 Python
python同步windows和linux文件
Aug 29 Python
使用Python完成15位18位身份证的互转功能
Nov 06 Python
python3 pathlib库Path类方法总结
Dec 26 Python
Pytorch基本变量类型FloatTensor与Variable用法
Jan 08 Python
通过python实现windows桌面截图代码实例
Jan 17 Python
python读取与处理netcdf数据方式
Feb 14 Python
python实现opencv+scoket网络实时图传
Mar 20 Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 Python
Python如何实现远程方法调用
Aug 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
php析构函数的简单使用说明
2015/08/24 PHP
微信支付的开发流程详解
2016/09/13 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
JavaScript对象、属性、事件手册集合方便查询
2010/07/04 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
vue中axios处理http发送请求的示例(Post和get)
2017/10/13 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
Pytorch之contiguous的用法
2019/12/31 Python
Python print不能立即打印的解决方式
2020/02/19 Python
python归并排序算法过程实例讲解
2020/11/04 Python
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
中专生自荐信
2013/10/12 职场文书
运动会广播稿100字
2014/09/14 职场文书
市场部岗位职责
2015/02/12 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
幽灵公主观后感
2015/06/09 职场文书
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers