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三元运算实现方法
Jan 12 Python
Python中请不要再用re.compile了
Jun 30 Python
对Python函数设计规范详解
Jul 19 Python
Python使用scipy模块实现一维卷积运算示例
Sep 05 Python
python统计指定目录内文件的代码行数
Sep 19 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
Oct 04 Python
python数据化运营的重要意义
Nov 25 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
Dec 19 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
pandas apply多线程实现代码
Aug 17 Python
利用python爬取有道词典的方法
Dec 08 Python
python 对xml解析的示例
Feb 27 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正确解析UTF-8字符串技巧应用
2012/11/07 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
vue3.0中的双向数据绑定方法及优缺点
2019/08/01 Javascript
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
用HTML5实现手机摇一摇的功能的教程
2012/10/30 HTML / CSS
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
高一历史教学反思
2014/01/13 职场文书
中学家长会邀请函
2014/01/17 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
荷叶母亲教学反思
2014/04/30 职场文书
创建青年文明号材料
2014/05/09 职场文书
临床医学专业求职信
2014/08/08 职场文书
股东大会通知
2015/04/24 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python