请求结果断言/数据库断言
import ast
from decimal import Decimal
import jsonpath
from common.my_mysql import MyMysql
class MyAssert:
# 响应结果断言
def assert_response_value(self,check_str,response_dict):
'''
:param check_str: 从Excel当中,读取出来的断言列,
:param response_dict: 接口请求之后的响应数据,字典类型
:return:
'''
check_res=[]
check_list=eval(check_str)
for check in check_list:
# 通过jsonpath从响应结果中提取实际的结果
actual=jsonpath.jsonpath(response_dict,check["expr"])
if isinstance(actual,list):
actual=actual[0]
# 与实际结果做比较
if check["type"]=='eq':
check_res.append(actual==check["expected"])
if False in check_res:
return False
else:
return True
def assert_db_value(self,check_db_str):
global res
check_db_res=[]
db=MyMysql()
check_db_list=eval(check_db_str)
for check_db in check_db_list:
if check_db["type"]=='count':
res=db.get_count(check_db["sql"])
check_db_res.append(res==check_db["expected"])
if False in check_db_res:
return False
else:
return True
if __name__ == '__main__':
# 已经从excel当中读取出来的字符串
check_db_str = """[{"sql":"select id from member where mobile_phone='15500000000'","expected":1,"db_type":"count"}]"""
res = MyAssert().assert_db_value(check_db_str)
print(res)