自动化复习巩固第五天封装数据库及断言方法
2024/1/20 1:02:18
本文主要是介绍自动化复习巩固第五天封装数据库及断言方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
说明:数据库配置文件,主要存放数据库连接信息
settings.py文件
mysql_info = { "host": "xxxxx", "user": "xxxxx", "password": "xxxxx", "port": 3306, "charset": "utf8mb4", "database": "xxxxx", "autocommit": True }
方法2:处理数据库结果方法
作用:处理数据库查询行数以及查询结果
handle_mysql.py文件
import pymysql from loguru import logger class HandleMysql: #连接数据库,初始化 def __init__(self,**kwargs): self.conn = pymysql.connect(**kwargs,cursorclass=pymysql.cursors.DictCursor) #创建游标 self.cur = pymysql.conn.curcor() #获取影响行数 def select_and_get_row_counts(self,query_sql): logger.info(f"执行的sql语句是{query_sql}") counts = self.cur.execute(query_sql) logger.info(f"影响的行数是{counts}") return counts #获取影响数据 def select_and_get_datas(self,query_sql,many=1): """ :param query_sql: 执行sql语句 :param many: many = 1 代表fetchone,many > 1 代表fetchmany,many < 1 代表fetchall :return: """ counts = self.select_and_get_row_counts(query_sql) if counts > 0: if many == 1: data = self.cur.fetchone() elif many > 1: data = self.cur.fetchmany() else: data = self.cur.fetchall() logger.info(f"影响行数是{many},获取到的数据是{data}") return data #关闭数据库 def close_db(self): self.cur.close() self.conn.close()
方法3:excel中前置sql语句执行处理方法
作用:在测试数据中可能会需要在数据库中查询结果来使用,所以在excel中写sql语句执行出来的结果设置为全局变量
handle_pre_sql.py文件
from loguru import logger from settings import mysql_info from tools.handle_mysql import HandleMysql from tools.handle_global_data import GlobalData from tools.handle_replace import replace_mark_by_data #执行sql语句,设置全局变量 def execute_presql_and_set_globaldata(pre_sql): #首先替换sql语句里面的数据 new_pre_sql = replace_mark_by_data(pre_sql) logger.info(f"替换后的sql语句是{new_pre_sql}") #连接数据库 hmysql = HandleMysql(**mysql_info) #执行sql语句 dict_data = hmysql.select_and_get_datas(new_pre_sql) logger.info(f"查询出来的数据是{dict_data}") #设置全局变量 for key,value in dict_data.items(): setattr(GlobalData,"key","value") logger.info(f"设置的全局变量名为{key},值是{value}") #关闭数据库 hmysql.close_db()
方法4:exce预期结果断言方法
作用:提前准备好断言字段,然后在执行用例的时候将结果与excel中的预期结果部分进行断言
from loguru import logger from tools.handle_replace import replace_mark_by_data def assert_resp_data(resp_text,expected_str): """ :param resp_text: 响应数据 :param expected_str: 期望断言数据 :return: """ logger.info("开始断言响应数据......") #替换 expected_str = replace_mark_by_data(expected_str) #将数据转换成列表 assert_data_list = eval(expected_str) for assert_str in assert_data_list: logger.info(f"断言响应结果预期是{assert_str}") try: assert assert_str in resp_text logger.info("断言成功") except: logger.info(f"断言失败") raise # 面临的问题:有多个断言条件,某一个断言失败了,那剩下的断言就不会执行了。。 # pytest有一个第三方库:pytest-assume -- 某个断言失败了不影响下一个断言执行 -- 自行拓展
方法5:数据库断言方法
作用:提取数据库中的结果进行断言
这里的excel中的数据库断言语句格式是:
[ {"sql": 'select * from tz_user where user_mobile="#new_phone#"', "compare_type": "int", "check": 1}, {"sql": 'select level_type from tz_user where user_mobile="#new_phone#"', "compare_type": "dict", "check": {"level_type": 0}} ]
from loguru import logger from settings import mysql_info from tools.handle_mysql import HandleMysql from tools.handle_replace import replace_mark_by_data def assert_db(assert_db_str): """ :param assert_db_str: excel中的数据库断言字段 :return: """ #先替换 assert_db_str = replace_mark_by_data(assert_db_str) #再转换成列表 assert_db_list = eval(assert_db_str) #连接数据库 hmysql = HandleMysql(**mysql_info) for one_assert in assert_db_list: if one_assert.get("compare_type") == "int": logger.info("执行sql语句,获取执行结果行数") result = hmysql.select_and_get_row_counts(one_assert.get("sql")) else: logger.info("执行sql语句,获取数据") result = hmysql.select_and_get_datas(one_assert.get("sql")) #对比实际与期望是否相等 logger.info(f"实际结果为{result}") logger.info(f'期望结果为{one_assert.get("check")}') try: assert result == one_assert.get("check") logger.info("断言成功") except: logger.info("断言失败") raise hmysql.close_db()
这篇关于自动化复习巩固第五天封装数据库及断言方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-01成为百万架构师的第一课:设计模式:Spring中的设计模式
- 2025-01-01一个基于注解驱动的可视化的DDD架构-超越COLA的设计
- 2025-01-01PlantUML 时序图 基本例子
- 2025-01-01plantuml 信号时序图
- 2025-01-01聊聊springboot项目如何优雅进行数据校验
- 2024-12-31自由职业者效率提升指南:3个时间管理技巧搞定多个项目
- 2024-12-31适用于咨询行业的项目管理工具:提升跨团队协作和工作效率的最佳选择
- 2024-12-31高效协作的未来:2024年实时文档工具深度解析
- 2024-12-31商务谈判者的利器!哪 6 款办公软件能提升春节合作成功率?
- 2024-12-31小团队如何选择最实用的项目管理工具?高效协作与任务追踪指南