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中的True,False条件判断实例分析
Jan 12 Python
用Python抢过年的火车票附源码
Dec 07 Python
Python日期的加减等操作的示例
Aug 15 Python
Python中Threading用法详解
Dec 27 Python
python实现扫描日志关键字的示例
Apr 28 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
Apr 22 Python
浅谈keras中loss与val_loss的关系
Jun 22 Python
Django如何在不停机的情况下创建索引
Aug 02 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 Python
python爬虫中的url下载器用法详解
Nov 30 Python
提取视频中的音频 Python只需要三行代码!
May 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
phpmyadmin操作流程
2006/10/09 PHP
php array_walk() 数组函数
2011/07/12 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
Python的迭代器和生成器使用实例
2015/01/14 Python
Python实现股市信息下载的方法
2015/06/15 Python
Python tkinter事件高级用法实例
2018/01/31 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
EntityManager都有哪些方法
2013/11/01 面试题
铁路工务反思材料
2014/02/07 职场文书
工程承诺书怎么写
2014/05/24 职场文书
田径运动会通讯稿
2014/09/13 职场文书
综合素质自我评价怎么写
2014/09/14 职场文书
房屋出售授权委托书
2014/10/12 职场文书
2014普法依法治理工作总结
2014/12/18 职场文书
入伍通知书
2015/04/23 职场文书
结婚十年感言
2015/07/31 职场文书
高中同学会致辞
2015/08/01 职场文书