(下面方法名非固定)
1、统一请求封装及接口封装
把所有的请求全部集中到一个方法
目的: 利于后期维护以及加入一些日志处理、异常处理等操作
1、统一请求封装
创建requests_util py文件,创建统一发送请求的方法 (send_req
uests),将不同的地址进行分类 创建config.yaml存放基础路径 创建yaml_util py文件,创建read_config_file方法读取config.yaml,处理基础路径 send_request里面初始化init方法,在里面调用read_config_file()方法
2、设置处理中间变量
处理完基础路径后再在yml工具类里面创建write_extract_file和read_extract_file方法用于存放和提取中间变量,clean_extract_file方法清空extract.yaml,clean_extract_file方法在conftest.py文件里使用,使用装饰器fixtrue使会话开始前清空extract.yaml文件
3、处理路径或参数请求头等中的{{}}的情况(结合读取extract.yaml)的方法
url处理基础路径后处理路径传参的部分 在requests_util py文件中创建统一替换的方法 (replace_value)
# 统一替换的方法 (data可能是url(string),或参数(字典,字典中包含列表),或请求头(字典))调用replace_value(url)将路径中的{{参数}}进行处理
4、 编写yaml文件(yaml数据驱动)
1、编写yaml文件将request、base_url等数据替换到yaml文件中
2、使用装饰器pytest.mark.parametrize()进行数据驱动
3、在RequestUtil py文件中创建analysis_yaml()方法进行yaml文件规范化
4、extract的提取
思路:
先用jsonpath.jsonpath()判断是否有extract这个关键字
先对caseinfo[“extract”]进行遍历 (字典)
再两个方向正则或json
5、接口动态参数的封装(debug_talk.py热加载的方式)把接口关联的取值和热加载一起处理
复制request——utls中的统一替换方法,改为replace_load
获取debug方法时使用反射原理
替换热加载方法编写完成后,在统一发送请求方法中的遍历**kwargs循环中调用replac.load方法
热加载的替换方法完成后可以将统一替换中间值的那个方法注释掉
在热加载中添加方法(提取中间变量的方法)然后就可以注释掉统一替换的方法
完成后将yaml文件中的{{参数}},改成热加载的${方法(参数)}
注意:热加载传参时,需要什么类型时,需要在热加载方法中做强转
6、断言封装
什么地方断言?
发送请求后断言
为了更加清晰,可以在RequestUtil里面新建一个validate_result
方法来进行断言
主要思路:先判断断言方式,是eq断言还是contains断言还是其它的断言,如果是eq断言先判断是不是状态码断言(status)再进行eq断言里面的其它断言,如果是contains断言则直接判断contains的值是否在实际结果里面即可
7、csv数据驱动
csv数据驱动封装使用一级关键字parameters实现
创建一个data文件包存放csv文件,根据yaml文件编写csv文件,csv文件里,数据后面不能包含空格.
创建一个py文件(parameters)存放读取csv文件的方法
对csv文件进行解析,在parameters文件里面创建analysis_csv方法解析
先判断在一级关键字中是否有parameters,再规范长度,再继续解析用嵌套for循环
8、日志处理
略