目录
前言:
一、项目背景
二、框架封装
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