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 相关文章推荐
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
django使用html模板减少代码代码解析
Dec 12 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
python读取与写入csv格式文件的示例代码
Dec 16 Python
Python内存管理实例分析
Jul 10 Python
python编写简单端口扫描器
Sep 04 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
Python描述符descriptor使用原理解析
Mar 21 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
tensorflow中的数据类型dtype用法说明
May 26 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
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
php中对2个数组相加的函数
2011/06/24 PHP
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
php经典趣味算法实例代码
2020/01/21 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
jquery获取当前点击对象的value方法
2014/02/28 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
python实现得到一个给定类的虚函数
2014/09/28 Python
Python的函数的一些高阶特性
2015/04/27 Python
Python中模块string.py详解
2017/03/12 Python
Django 自动生成api接口文档教程
2019/11/19 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
python批量修改xml属性的实现方式
2020/03/05 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
项目经理的岗位职责
2013/11/23 职场文书
个人担保书格式范文
2014/05/12 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
面试感谢信范文
2015/01/22 职场文书
2015年组织部工作总结
2015/04/03 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
合理化建议书范文
2015/09/14 职场文书
导游词之太原天龙山
2020/01/02 职场文书
python 实现的截屏工具
2021/05/08 Python
Python经常使用的一些内置函数
2022/04/11 Python