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通过ssh-powershell监控windows的方法
Jun 02 Python
python实现隐马尔科夫模型HMM
Mar 25 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
Python基于numpy模块实现回归预测
May 14 Python
Pycharm生成可执行文件.exe的实现方法
Jun 02 Python
python实现PDF中表格转化为Excel的方法
Jun 16 Python
Numpy(Pandas)删除全为零的列的方法
Sep 11 Python
python 录制系统声音的示例
Dec 21 Python
python基于opencv实现人脸识别
Jan 04 Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 18 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
Mar 03 Python
使用Django实现商城验证码模块的方法
Jun 01 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设计模式 State (状态模式)
2011/06/26 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
2018/10/18 PHP
jquery调用wcf并展示出数据的方法
2011/07/07 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
2019/08/20 Javascript
JavaScript交换变量常用4种方法解析
2020/09/02 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python 搭建Web站点之Web服务器网关接口
2016/11/06 Python
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
分享vim python缩进等一些配置
2018/07/02 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
python字典setdefault方法和get方法使用实例
2019/12/25 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
Python运行异常管理解决方案
2020/03/09 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
高二历史教学反思
2014/01/25 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
2014年图书室工作总结
2014/12/09 职场文书
2015新教师教学工作总结
2015/07/22 职场文书