一、接口自动化框架封装之热加载
二、断言封装
1.状态断言:
2.业务断言:
相等的断言
包含断言
大于断言
内容:接口自动化测试框架封装之热加载封装以及断言封装
一、接口自动化框架封装之热加载 热加载:就是在代码执行过程当中动态的调用Python中的方法达到或得动态参数的目的。
利用反射 调用方法 获取动态参数的值
# 替换值的方法
# Qa1(替换url,params,data,jsom,headers)
# Qa2(string,int,float,list,dict)
def replace_value(self, data):
if data:
# 保存数据类型
data_type = type(data)
# 判断数据类型
if isinstance(data, dict) or isinstance(data, list):
str_data = json.dumps(data)
else:
str_data = str(data)
# 替换
for cs in range(1, str_data.count('${') + 1):
if "${" in str_data and "}" in str_data:
start_index = str_data.index("${")
end_index = str_data.index("}", start_index)
old_value = str_data[start_index:end_index + 1]
# 反射:通过字类的对象和方法符串调用方法
func_name = old_value[2:old_value.index('(')]
args_value1 = old_value[old_value.index('(') + 1:old_value.index(')')]
if args_value1 != "":
if "," in args_value1:
args_value2 = args_value1.split(',')
new_value = getattr(self.obj, func_name)(*args_value2)
print(new_value)
else:
print("func_name",func_name)
new_value = getattr(self.obj, func_name)(args_value1)
else:
new_value = getattr(self.obj, func_name)
# 数字类型去掉“”
if isinstance(new_value, int) or isinstance(new_value, float):
str_data = str_data.replace('"' + old_value + '"', str(new_value))
else:
str_data = str_data.replace(old_value, str(new_value))
# 还原数据类型
if isinstance(data, dict) or isinstance(data, list):
data = json.loads(str_data)
else:
data = data_type(str_data)
return data
二、断言封装
1.状态断言:
断言返回的状态码为200
2.业务断言:
相等的断言
def equals_assert(self, value, sj_restul, result_code):
flag = 0
for assert_key, assert_value in value.items():
if assert_key == "status_code":
if assert_value != result_code:
flag = flag + 1
else:
lists = jsonpath.jsonpath(sj_restul, '$..%s' % assert_key)
if lists:
if assert_value not in lists:
flag = flag + 1
else:
flag = flag + 1
return flag
包含断言
def contains_assert(self, value, sj_result):
flag = 0
if str(value) not in str(sj_result):
flag = flag + 1
return flag
大于断言
def greater_than_assert(self, value, sj_result):
flag = 0
(assert_key, assert_value), = value.items()
sj_value = (jsonpath.jsonpath(sj_result, '$..%s' % assert_key))[0]
if assert_value >= sj_value:
flag = flag + 1
return flag
2.业务断言:
相等的断言
def equals_assert(self, value, sj_restul, result_code):
flag = 0
for assert_key, assert_value in value.items():
if assert_key == "status_code":
if assert_value != result_code:
flag = flag + 1
else:
lists = jsonpath.jsonpath(sj_restul, '$..%s' % assert_key)
if lists:
if assert_value not in lists:
flag = flag + 1
else:
flag = flag + 1
return flag
包含断言
def contains_assert(self, value, sj_result):
flag = 0
if str(value) not in str(sj_result):
flag = flag + 1
return flag
大于断言
def greater_than_assert(self, value, sj_result):
flag = 0
(assert_key, assert_value), = value.items()
sj_value = (jsonpath.jsonpath(sj_result, '$..%s' % assert_key))[0]
if assert_value >= sj_value:
flag = flag + 1
return flag
def equals_assert(self, value, sj_restul, result_code):
flag = 0
for assert_key, assert_value in value.items():
if assert_key == "status_code":
if assert_value != result_code:
flag = flag + 1
else:
lists = jsonpath.jsonpath(sj_restul, '$..%s' % assert_key)
if lists:
if assert_value not in lists:
flag = flag + 1
else:
flag = flag + 1
return flag
包含断言
def contains_assert(self, value, sj_result):
flag = 0
if str(value) not in str(sj_result):
flag = flag + 1
return flag
大于断言
def greater_than_assert(self, value, sj_result):
flag = 0
(assert_key, assert_value), = value.items()
sj_value = (jsonpath.jsonpath(sj_result, '$..%s' % assert_key))[0]
if assert_value >= sj_value:
flag = flag + 1
return flag
def greater_than_assert(self, value, sj_result):
flag = 0
(assert_key, assert_value), = value.items()
sj_value = (jsonpath.jsonpath(sj_result, '$..%s' % assert_key))[0]
if assert_value >= sj_value:
flag = flag + 1
return flag


