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 itchat实现微信好友头像拼接图的示例代码
Aug 14 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
Jul 09 Python
wxPython色环电阻计算器
Nov 18 Python
python实现人机猜拳小游戏
Feb 03 Python
详解PyQt5信号与槽的几种高级玩法
Mar 24 Python
浅析python中的del用法
Sep 02 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
BeautifulSoup获取指定class样式的div的实现
Dec 07 Python
opencv-python图像配准(匹配和叠加)的实现
Jun 23 Python
Python基本数据类型之字符串str
Jul 21 Python
Django框架中模型的用法
Jun 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使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
jQuery中fadeOut()方法用法实例
2014/12/24 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
理解JavaScript中的对象
2020/08/25 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
python中私有函数调用方法解密
2016/04/29 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
python+opencv实现车道线检测
2021/02/19 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
广州盈通面试题
2015/12/05 面试题
升职自荐信
2013/11/28 职场文书
车间调度岗位职责
2013/11/30 职场文书
行政助理岗位职责范文
2013/12/03 职场文书
就业自荐书
2013/12/05 职场文书
洗发水广告词
2014/03/13 职场文书
高考励志标语
2014/06/05 职场文书
商场父亲节活动方案
2014/08/27 职场文书
优秀教师先进材料
2014/12/16 职场文书
测量员岗位职责
2015/02/14 职场文书
公司慰问信范文
2015/03/23 职场文书
同意离婚答辩状
2015/05/22 职场文书
写作技巧:优秀文案必备的3种结构
2019/08/19 职场文书
导游词之上饶龟峰
2019/10/25 职场文书