接口封装遇到的坑--2
1.关于jsonpath 一定要pip install jsonpath
所取的值为列表,取第一个为json_value[0]
try: res_json = res.json() json_value = jsonpath.jsonpath(res_json,value) write_extract_yaml({key:json_value[0]}) except Exception as e: print("返回文件不是json")
2.取值时候,测试代码如下:注意:替换以后需要赋值给一个新的变量
str = '/cgi-bin/tags/get?access_token=${access_token}' start_index = str.index("${") end_index = str.index("}",start_index) old_value = str[start_index:end_index+1] print(old_value) new_value = read_extract_yaml("access_token") print(new_value) str1 = str.replace(old_value,new_value) print(str1)
3.替换的方法,需要条件,自己写代码忘记了一行:if "${" in data_str and "}" in data_str: 导致了只要把次数代码for cs in range(1,data_str.count("${")+1):去掉所有的用例就无法执行
def repalce_value(self,data): if data: # 获取数据类型 data_type = type(data) if isinstance(data,dict) or isinstance(data,list): data_str = json.dumps(data) else: data_str = str(data) #替换 for cs in range(1,data_str.count("${")+1): if "${" in data_str and "}" in data_str: start_index = data_str.index("${") end_index = data_str.index("}", start_index) old_value = data_str[start_index:end_index + 1] new_value = read_extract_yaml(old_value[2:-1]) data_str = data_str.replace(old_value, new_value) #替换完成后再返回给data if isinstance(data,dict) or isinstance(data,list): data = json.loads(data_str) else: data = data_type(data_str) return data
4.热加载,类对象的方法和字符串方法的调用,的目的:在进入替换方法的时候,通过热加载获取new_value
5.断言的目的就是要
1)获取res.text或者res.json()后根据返回断言,现在就是需要吧jsonpath获取res.json()并且抛出异常的方法放在外面
2)断言需要放在提取之后,因为要是断言失败之后的用例就不会提取了(对于接口关联的接口都不会执行)
3) 断言相等或者包含需要标记flag,最后汇总到all_flags,最后assert all_flag=0,只有为0才是断言通过
每篇一句:
翻山又过海再想不起来
本文来自博客园,作者:Titen,转载请注明原文链接:https://www.cnblogs.com/chengxiazuohua/p/15675466.html