之前也写了一个测试框架,不过用例需要用代码来编写基于pytest搭建接口自动化测试框架,提供源码 1.第一步我先写一个环境配置文件,按自己公司环境配置,我这边只有测试和生产环境,配置协议,域名和headers。后续我只有提供地址和请求参数就可以发起接口访问  2.我写一个读取文件的类,准备用于处理文件相关,现在只有读取yaml问的方法,后续准备写读取execl、execl和yaml用例数据转换,用例数据处理。  方法测试:  3.环境配置总开关,一开始我是想把环境这个参数放着请求时填写的,最后发现比较麻烦,一切以简单明了为好 
4.写一个读取并处理配置文件信息的方法,使用我之前写的读取ymal的方法,把数据组合起来  5.初步封装requests方法,大部分接口都是这2个请求场景,针对公司接口格式封装  测试请求数据读取情况,读出来最终url,headers,data  6.yaml格式用例设计  测试读取,按照注释的格式来(设计时各种报错) 
7.编写用例请求参数依赖方法(接口返回值提取和接口参数依赖),一个图截不下啊 data_is_replace()判断数据需不需要替换,data有可能是空,因为一些接口不需要请求参数,或者不需要提取接口返回值  搞个代码
'''
@time : 2022/6/14
@Author : LL
@File : parameter_setting.py
参数处理
'''
from jsonpath import jsonpath
class ParameterSetting:
access_value = {'b': 213, 'g': 21}
@classmethod
def data_is_replace(cls, data):
'''
:param data: 请求参数data和提取参数extract_key
:return: 返回参数是否需要被替换
'''
if data is None:
return False
for k, v in data.items():
if '$.' in v:
return True
return False
@classmethod
def parameter_setting(cls, data: dict, type='get'):
'''
:param data: 返回结果提取和参数依赖使用dict 例:{'bill': '$.bill'}
:param type: save :把数据存到参数池里面无返回,get读取参数池数据并返回新值
:return:
'''
if type == 'get':
for k, v in data.items():
if '$.' in v:
v = jsonpath(cls.access_value, v)[0]
data[k] = v
print(f'最终返回参数:{data}')
return data
elif type == 'save':
for k, v in data.items():
cls.access_value[k] = v
if __name__ == '__main__':
ParameterSetting.parameter_setting({'a': 44, 'a1': 144}, 'save')
ParameterSetting.parameter_setting({'b': '$.b', 'g': '$.g'})
print(f'最终的参数池{ParameterSetting.access_value}')
测试  8.写一个读取用例数据的迭代器,可以判断是否需要执行,把请求参数表达式替换为具体的值,测试结果也截图了,但是这个方法只能读取单个文件的数据,后续处理多个文件。或者直接读取整个文件,还可以设置排除用例文件的方式运行  测试代码这里使用了生成器来一条一条的返回 生成器我之前写过一篇 python生成器+pytest实现参数化 
|