教育-接口项目总结

发布时间 2023-04-13 00:08:25作者: 凝眸神恍

接口自动化测试:

yaml是测试用例(yaml文件中可以有变量或函数)(ui自动化中excel作为测试用例,也可以有变量或函数)  $变量,${func(agrs)}

 

 common/api.py 核心TestAPI,控制整个业务流程

两个类方法:

1、find_case(cls,path:Path) 寻找yaml测试用例,并将yaml文件转化成case对象(用到dataclass库,可以校验yaml文件不能有多余的字段)  (一个对象就是一个信息包)

    遍历生成器:list(path.global(yaml_dir))

            利用反射:setattr(cls,yaml_name,fun_body),为类动态的增加测试用例(yaml_name一定test开头)

 

      

2、 def  func(cls,case):         #闭包函数(注意,闭包函数中内函数不能修改外函数的局部变量即参数)

    @pytest.mark.parametrize("case", case_list, ids=case_title_list)

    def  func_body():     #用例通用函数

      1、发送请求(发送请求前要热加载)

      resp = session.request(**case.request)   -------》封装了requests方法,增加了日志,和支持baseurl     用session发送请求,可以自动关联cookie

      2、从响应中提取依赖,保存到依赖yaml文件  extract.yaml

      exchange.extract(resp, var_name,*extract_list)------------->提取依赖保存到yaml的方法写到了Exchage的类里

      3、断言(断言前要热加载)

       handered_case.assert_all()--------->断言的方法写到了Case类里

    return func_body

参数化如何做的?

yaml:

 

 

 

利用@pytest.mark.parametrize("case", case_list, ids=case_title_list)

通过yaml的parametrize字段,得到case_list(case对象的列表)

一个有变量的yaml文件,注入不同的数据,就得到不同的yaml文件,不同的yaml文件实例化不同的case对象

 

data = YamlFile(path)#字典   自动读取yaml文件
case = CaseInfo(**data)#自动验证yaml格式 yaml文件转case对象

 

依赖如何做的?(对于参数化的业务流程,正例写在最后面,方便下个接口获取上一个接口提供的依赖)

yaml设计:

 

 

 resp的属性,表达式,第几个值

resp.cookies,

 

断言如何做的?

鉴权如何做的?