测试用例代码分层思想:
- 测试用例中尽可能少写代码
- 新增一些文件和方法,作为方法传递使用
- 统一处理接口请求和返回,实现代码复用
针对已经读取yaml和ini文件的用例代码的接口请求部分,进行封装
1、创建参数请求接口的方法文件
1)新建一个专用的api文件夹及文件。
2)编写接口调用代码。将接口请求部分代码抽出放到api文件中,如下mobile_query()即为请求接口的方法。
注意mobile_query()的括号中已经需要传入参数param
同时主程序case_optimize中改为:
2、针对api文件中的mobile_query()中的request请求优化
1)新建一个文件夹及文件用来存放每个接口必须要调用的get/post方法。
2)mobile_query()相应修改
3)改进。重新定义变量接收ini中的域名
则在rest_client中引入read_ini方法;
3、优化mobile_query中的url传参。
如上图,第2步中的url仍需要完善。
1)创建一个文件api_util专门存放url。便于管理多个url,例如订单页面、商品详情接口
写法如下:
将mobile_query中的get()部分,重新存放在api_util文件的get_mobile_belong方法中。
2)修改mobile_query()。此时,mobile_query接口只需要传入params参数,而内置其他方法只需要调用。
4、去除方法中的多余params
**kwargs是个可变参数,当形参param传入时,**kwargs会根据其是param还是json自动进行传参。
则以上两个方法中的params可直接去掉,进一步简化代码。
5、封装方法。
1)将api_util文件和rest_client文件中的方法用类进行封装。
2)通过类继承实现调用get方法。
第一步中两个方法类封装后,api_util中的api()方法此时不能接着调用get()(因为之前api_util只引入了get方法)
则Api类就需要继承RestClient,才能调用get().
3)基于同2)一样的道理,此时api中mobile_query不能调用get_mobile_belong()。
定义变量api_util实例化Api():
mobile_query()通过调用和引入api_util,从而实现调用Api类中的方法: