断言无忧!接口自动化框架封装,Mysql数据库断言

news2024/11/19 18:24:57

目录

 前言:

一、项目背景

二、框架封装

1. Mysql数据库连接

2. 查询功能

3. 断言功能

4. 使用示例

三、总结


 前言:

随着互联网行业的迅猛发展,接口自动化测试在软件开发过程中扮演着越来越重要的角色。而在进行接口测试的过程中,常常会涉及到对数据库的操作,如查询、修改、删除等。而要保证接口测试的准确性和可靠性,则需要对数据库的操作进行断言验证,确保接口返回的数据和数据库中存储的数据一致。

本文将结合实际项目案例,分享一个基于Python语言的接口自动化测试框架封装方法,通过封装Mysql数据库查询和断言功能,实现高效、准确的接口自动化测试。

一、项目背景

在进行接口自动化测试时,通常会面对以下几个问题:
- 频繁的数据库操作对测试性能影响较大,如何优化?
- 接口返回数据和数据库中数据不一致,如何进行自动化断言?

为解决以上问题,我们选择对接口自动化测试框架进行封装,封装数据库查询模块和断言模块。

二、框架封装

1. Mysql数据库连接

在Python中,我们可以通过pymysql模块进行数据库连接。具体实现代码如下:

import pymysql

class MysqlHandler(object):
    def __init__(self, host, port, user, passwd, db, charset='utf8'):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.db = db
        self.charset = charset
        self.conn = None
        self.cursor = None
        
    def connect(self):
        self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user,
                               passwd=self.passwd, db=self.db, charset=self.charset)
        self.cursor = self.conn.cursor()
        return self.cursor

    def close(self):
        self.cursor.close()
        self.conn.close()

2. 查询功能

针对数据库的查询操作,我们将其封装为MysqlHandler类的成员函数,具体实现代码如下:

def query(self, sql):
        try:
            self.connect()
            self.cursor.execute(sql)
            return self.cursor.fetchall()
        except Exception as e:
            print(e)
        finally:
            self.close()

3. 断言功能

针对接口返回数据和数据库中数据不一致的问题,我们将其封装为MysqlAssert类的成员函数,通过分别查询数据库和接口数据,然后比对两者返回结果是否一致,具体实现代码如下:

class MysqlAssert(object):

    def __init__(self, mysql_handler):
        self.mysql_handler = mysql_handler

    def assert_result(self, sql, result_dict_list):
        mysql_result = self.mysql_handler.query(sql)
        for i, result_dict in enumerate(result_dict_list):
            for key, value in result_dict.items():
                assert mysql_result[i][key] == value, f'assert fail, key={key}, expected={value}, sql={sql}'

4. 使用示例

在实际项目中,我们可以通过以下方式进行调用和使用:

mysql_handler = MysqlHandler(host='127.0.0.1', port=3306, user='root', passwd='123456', db='test')
mysql_handler.connect()

assert_handler = MysqlAssert(mysql_handler=mysql_handler)
sql = "SELECT * FROM user WHERE id='test'"
result_dict_list = [{'name': 'test', 'age': 18}]
assert_handler.assert_result(sql=sql, result_dict_list=result_dict_list)

mysql_handler.close()

三、总结

通过本文的分享,我们学习了如何针对接口自动化测试中的数据库查询和断言进行封装,借助Python语言的优势,实现了高效、准确的接口自动化测试。在实际项目中,我们还可以根据实际需求进行功能扩展,如增加数据插入、更新、删除等操作,以及批量查询等。

 作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试前进之路的必须品,如果你用得到的话可以直接拿走,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

获取方式:留言【自动化测试】即可获取
【自动化测试交流】:574737577(进群备注ccc)http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=kBejXNHnzeKNqwOzwf8uRo-EPmQUZ7wl&authKey=yTwGvzhroHT6GcHrdGUH7BAFUlC4RFn1POhNBRXhQGm3qkeBc4%2F7DGYk%2Byi9vymF&noverify=0&group_code=574737577

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/562712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初学UE5,UE4的教程适用UE5吗?

在UE5出版后,很多人问UE4还要不要学、UE4适不适用于UE5等问题。 UE5是最近推出的一款游戏引擎,相较于UE4而言,它有着更好的性能和灵活的工作流程,同时也引入了一些新的功能。对于一些游戏开发初学者来说,他们可能会想…

Flask restful分页接口实现

1.先定义一个工作信息表: 指定一些相关的字段:工作名称、年限、级别等 class Work(db.Model):__tablename__ = workid = db.Column(db.Integer, primary_key=True)workName = db.Column(db.String(5),nullable=False)year = db.Column(db.String(20), nullable=False)level = …

加密与解密 调试篇 动态调试技术 (二)

我们在 (一)中调试了一个程序 接着我们开始继续学习 常见的断点 这里有 INT 3断点 硬件断点 内存断点 消息断点等 1.INT 3 断点 我们在OllyDbg中 可以使用 命令 bp 或者 F12进行断点 INT3断点 就是在程序中 对该位置的代码 进行替换 替换为INT3 INT3 是一个软中断指令…

ChatGPT:你真的了解网络安全吗?浅谈网络安全攻击防御进行时之网络安全新定义

ChatGPT:你真的了解网络安全吗?浅谈网络安全攻击防御进行时 网络安全新定义 ChatGPT(全名:Chat Generative Pre-trained Transformer),美国OpenAI 研发的聊天机器人程序,是人工智能技术驱动的自…

如何利用ChatGPT在工作中提高生产力?

[请微信搜索“云智AI助手”、“云智博瑞”关注我们 │ 谢谢支持 ] Cloud wisdom, AI assistant 每次人工智能成为头条新闻,都会引发对它是否会让人类失业的讨论。尽管某些工作可能会变得多余,我们应该学会与人工智能共同工作,将其作为增强自…

Python统计学13——回归的多重共线性、异方差、自相关的检验

在基础统计学,或者是计量经济学里面,需要对回归问题进行一些违背经典假设的检验,例如多重共线性、异方差、自相关的检验。这些检验用stata,r,Eviews什么都很简单,但是用python很多人都不会。下面就带大家实…

2023.5.14Ubuntu忘记MySQL密码

如果您忘记了MySQL的密码,可以按照以下步骤重置MySQL的密码: 停止MySQL服务: sudo service mysql stop启动MySQL服务,并跳过授权表: sudo mysqld_safe --skip-grant-tables &使用MySQL客户端连接到MySQL&#x…

【搭建轻量级图床】本地搭建LightPicture开源图床管理系统 - 异地远程访问

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进,功能也越来越多,而手机…

吃鸡史:傻鸡是怎么进化并“称霸”世界的?

鸡,给我们的印象是温顺的:温顺地长大,温顺地下蛋,温顺地进油锅… 若是鸡祖宗们知道,有一天它们的鸡子鸡孙会进化成一群不会飞、只知道吃的傻鸡,几千年前的红原鸡骨怕是都要惊得飞出土了! 毕竟…

day17 回话跟踪技术Cookie与Session

会话跟踪技术 问题:一次会话中的多次请求不会共享数据,不能显示.若通过传参数在路径上来解决该问题,不安全. 作用:解决HTTP无状态 http,cookie,session使用的区别 如果使用http中的request.setAttribute(),只能一次共享一个 若使用cookie,cookie存在浏览器中,每一次请求都…

JAVA——类间双向关联关系的实现-Contact与Phone类(电话簿管理系统)

首先:确定代码雏形框架(原始代码) 先根据以往经验写出一般的电话簿管理系统,先把代码雏形框架确定好。 原始代码运行结果: 原始代码源码: package bidirectionalDome;import java.util.ArrayList;public…

前端基础面试题八股文

html语义化的理解 代码结构: 使页面在没有css的情况下,也能够呈现出好的内容结构 有利于SEO: 爬虫根据标签来分配关键字的权重,因此可以和搜索引擎建立良好的沟通,帮助爬虫抓取更多的有效信息 方便其他设备解析: 如屏幕阅读器、盲人阅读器、移动设备等&#xff0c…

【敬伟ps教程】自由变换

文章目录 自由变换 自由变换 变换可以针对整个图层(组或链接图层),或者选区内 基本操作 编辑–自由变换(CtrilT); 自由变换的控件框来控制变换的效果; 自由变换是独立进行操作的模式,操作结束后需要点击确…

nginx -- 基本操作命令

修改nginx 配置,重新启动nginx流程,先进入到nginx目录 查看nginx状态 ps -ef | grep nginx 修改完/conf/nginx.conf 配置文件后保存 检查配置文件是否正确 ./sbin/nginx -t 检查文件配置正常 关闭nginx ./sbin/nginx -s quit 启动nginx ./sbin/nginx 完成

无线AP中小型、大型两种常见组网方式

无线AP(Access Point)网络覆盖是现代无线网络中的重要组成部分。它提供了无线信号的传输和接收功能,使用户能够在无线网络中进行通信和访问互联网。针对不同的需求和场景,存在两种常见的无线AP网络覆盖组网方式:中小型…

IMX6ULL平台的I2C

IMX6ULL平台的I2C 文章目录 IMX6ULL平台的I2C概述模式和操作 外部信号时钟功能描述I2C系统配置仲裁程序时钟同步信号交换外围总线访问复位中断字节顺序 初始化初始化序列启动的生成传输后软件响应停止的生成重复启动的生成从模式仲裁失败软件限制 I2C内存映射/寄存器定义I2C地址…

三维医学图像处理系统(PACS)源码

三维医学图像处理系统(PACS)源码 系统概述: 它集影像存储服务器、影像诊断工作站及RIS报告系统于一身,主要有图像处理模块、影像数据管理模块、RIS报告模块、光盘存档模块、DICOM通讯模块、胶片打印输出等模块组成, 具有完善的影…

opencv 裁剪图片方法详解

OpenCV 是一个用于计算机视觉和机器学习的开源库。它包含了很多图像处理的功能,包括裁剪图片。在 Python 中,我们可以使用 OpenCV 的 cv2 模块来实现图片的裁剪。 以下是使用 OpenCV 裁剪图片的详细步骤: 1. 导入所需的库: python…

python3.8,torch1.10.2+cu113、torch-geometric 安装

【1】conda create -n name python=3.8 【2】安装 torch 注意先看可适应的最高cuda版本 https://data.pyg.org/whl/ 版本对应 【3】按照顺序安装torch-geometric: torch-sparse、torch-scatter、torch-cluster、 torch-spline-conv \torch-geometric pip install torc…

详解c++新特性—c++11

目录 1、auto 1.1、解释 1.2、语法 1.3、注意事项 1.4、实例 1.5、auto和const的结合 1.6、auto的限制 1.7、auto的应用 2、decltype 2.1、解释 2.2、语法 2.3、注意事项 2.4、实例 2.5、decltype推导规则 2.6、decltype实际运用 3、返回值类型后置 3.1、解释…