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 相关文章推荐
pyqt4教程之widget使用示例分享
Mar 07 Python
python中from module import * 的一个坑
Jul 20 Python
Python中二维列表如何获取子区域元素的组成
Jan 19 Python
python 容器总结整理
Apr 04 Python
Python 中导入csv数据的三种方法
Nov 01 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
Kears+Opencv实现简单人脸识别
Aug 28 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
Django数据库操作之save与update的使用
Apr 01 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 Python
python文件路径操作方法总结
Dec 21 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
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
简单的两种Extjs formpanel加载数据的方式
2013/11/09 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
Vue异步加载about组件
2017/10/31 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
Python+Opencv识别两张相似图片
2020/03/23 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
python最长回文串算法
2018/06/04 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
Python测试模块doctest使用解析
2019/08/10 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
基于django2.2连oracle11g解决版本冲突的问题
2020/07/02 Python
python 6行代码制作月历生成器
2020/09/18 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
家长给孩子的表扬信
2014/01/17 职场文书
致跳高运动员加油稿
2014/02/12 职场文书
拆迁委托协议书
2014/09/15 职场文书
后勤工作个人总结
2015/02/28 职场文书
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL
电频谱管理的原则是什么
2022/02/18 无线电
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python