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实现数独算法实例
Jun 09 Python
python微信好友数据分析详解
Nov 19 Python
Python中常用的8种字符串操作方法
May 06 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 Python
python中从for循环延申到推导式的具体使用
Nov 29 Python
TensorFlow2.1.0最新版本安装详细教程
Apr 08 Python
Django使用Profile扩展User模块方式
May 14 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 Python
一些关于python 装饰器的个人理解
Aug 31 Python
Python实现简单的猜单词
Jun 15 Python
Python turtle实现贪吃蛇游戏
Jun 18 Python
Python中的程序流程控制语句
Feb 24 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
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
php文件上传表单摘自drupal的代码
2011/02/15 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
浅谈PHP的反射API
2017/02/26 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
php生成无限栏目树
2017/03/16 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
让广告代码不再影响你的网页加载速度
2006/07/07 Javascript
JS验证身份证有效性示例
2013/10/11 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
2016/12/08 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
Python通过解析网页实现看报程序的方法
2014/08/04 Python
Django1.7+python 2.78+pycharm配置mysql数据库教程
2014/11/18 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
土木工程毕业生自荐信
2013/11/12 职场文书
中英文求职信范文
2014/01/27 职场文书
项目施工员岗位职责
2014/03/09 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS