import ast from api.conf.setting import assert_db_info from api.tools.handle_replace import HandleReplace from api.tools.handle_db import HandleDb from api.tools.handle_response import HandleResponse # 数据库断言 class HandleAssertDb: """ 思路: 1、图片上传接口,返回的是图片上传后的路径,存在tz_attach_file表的file_path字段 2、将返回的路径提取出来,做成全局变量(HandleAttr类属性) 3、去excel中增加assert_db字段,写期望结果,和实际结果数据 {"expected_data": 1, "actual_data": "select count(1) from tz_attach_file where file_path ='2024/03/c2876474841b479dab280a9b1cfc63a2.png'"} 4、获取excel中assert_db字段,拿到实际结果actual_data,替换sql语句,再执行sql语句,获取执行结果 5、拿expected_data的值与actual_data中sql语句执行的结果进行对比断言 """ def __init__(self): # 参数替换类 self.replace_data = HandleReplace() # 数据库操作 self.handle_db = HandleDb() # 统一从HandleResponse类断言的类里面去断言 self.handle_response = HandleResponse() # 删除换行符和空格 data:str给变量data制定数据格式,好处,可以使用制定格式的方法 def __delete_space_wraps(self, data: str): """ :param data:excel中获取的请求参数 :return: 去掉空格和换行符的请求参数 """ for str_data in ["\n"]: # assert_db不能存在空格 data = data.replace(str_data, "") return data def assert_db(self, assert_db): # expected_data,actual_data取数来源读取excel中的assert_db,数据库断言 """ :param assert_db: excel中的assert_db字段 assert_db_info:配置文件setting中读取 :return: """ if assert_db: # 判断是否需要进行sql断言 # 去除空格和换行 assert_db = self.__delete_space_wraps(assert_db) # 三元运算判断assert_db数据类型是否为dict assert_db = assert_db if isinstance(assert_db, dict) else ast.literal_eval(assert_db) # 拿到预期结果和实际结果 expected_data = assert_db["expected_data"] sql = assert_db["actual_data"] # 拿到实际结果extract_data,替换sql语句 new_sql = self.replace_data.replace_sql(sql=sql) # 操作数据库,拿到入库数据 actual_data = self.handle_db.get_data(sql=new_sql) # extract_data=[1] int类型 # 数据断言 self.handle_response.assert_db(expected_data, actual_data[0]) else: print("excel中assert_db为空,无需进行mysql断言")
标签:断言,数据库,db,assert,sql,data,self From: https://www.cnblogs.com/python-test001/p/18117824