Python接口测试数据库封装实现原理

 更新时间:2020年05月09日 10:20:51   作者:全栈测试开发日记  
这篇文章主要介绍了Python接口测试数据库封装实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

引言

  做接口测试的时候,避免不了操作数据库。因为数据校验需要,测试数据初始化需要、一些参数化场景需要等。

  数据库操作框架设计

  这里主要操作mysql数据库,整体思路:

  封装实现

  具体代码实现:

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()

运行结果:

为了方便演示,先注释删除数据的sql,再执行程序:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • opencv 获取rtsp流媒体视频的实现方法

    opencv 获取rtsp流媒体视频的实现方法

    这篇文章主要介绍了opencv 获取rtsp流媒体视频的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python中的单行、多行、中文注释方法

    Python中的单行、多行、中文注释方法

    今天小编就为大家分享一篇Python中的单行、多行、中文注释方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 详解如何在PyQt5中实现平滑滚动的QScrollArea

    详解如何在PyQt5中实现平滑滚动的QScrollArea

    Qt 自带的 QScrollArea 滚动时只能在两个像素节点之间跳变,看起来很突兀。所以本文将通过定时器,重写 wheelEvent() 来实现平滑滚动,需要的可以参考一下
    2023-01-01
  • pytorch快速搭建神经网络_Sequential操作

    pytorch快速搭建神经网络_Sequential操作

    这篇文章主要介绍了pytorch快速搭建神经网络_Sequential操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python实现变声器功能(萝莉音御姐音)

    Python实现变声器功能(萝莉音御姐音)

    这篇文章主要介绍了Python实现变声器功能(萝莉音御姐音),本文图文实例代码相结合给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Python 内置函数速查表一览

    Python 内置函数速查表一览

    这篇文章主要介绍了Python 内置函数速查表,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Django查询优化及ajax编码格式原理解析

    Django查询优化及ajax编码格式原理解析

    这篇文章主要介绍了Django查询优化及ajax编码格式原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 利用Python编写一个Windows桌面小组件

    利用Python编写一个Windows桌面小组件

    这篇文章主要为大家详细介绍了如何让ChatGPT按要求编写Python代码实现一个Windows桌面小组件,文中的示例代码讲解详细,感兴趣的可以了解一下
    2023-06-06
  • Python递归时间复杂度

    Python递归时间复杂度

    这篇文章主要介绍了Python递归时间复杂度,时间复杂度一般认为O(logn),但递归算法的时间复杂度本质上是要看递归的次数,每次递归中的操作次数,下面文章详细介绍,需要的朋友可以参考一下
    2022-03-03
  • python使用pandas处理大数据节省内存技巧(推荐)

    python使用pandas处理大数据节省内存技巧(推荐)

    这篇文章主要介绍了python使用pandas处理大数据节省内存技巧,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05

最新评论