前言
一、接口自动化测试框架封装技术点:统一请求封装
- 目的:
- 1.去重重复得冗余的代码
- 2.跨python文件实现通过一个session来自动关联有cookie关联的接口
- 3.设置统一的公共参数,统一的文件处理,统一的异常处理,统一的日志监控,统一的用例校验等……
-
创建
requests_util.py
文件进行统一请求封装import requests # 统一请求封装 class RequestUtil: session = requests.session() def send_all_requests(self, **kwargs): # 处理公共参数 total_params = { "application": "web", "application_client_type": "pc", } # 处理公共参数 for key, value in kwargs.items(): if key == "params": kwargs["params"].update(total_params) # 处理文件上传 elif key == "files": for file_key, file_value in value.items(): value[file_key] = open(file_value, "rb") # 发送请求 response = RequestUtil.session.request(**kwargs) return response
-
使用封装好的方法
使用封装好的统一请求和公共参数
使用封装好的统一请求和文件上传
二、接口自动化测试框架封装技术点:接口关联封装
-
目的:
- 1.统一管理接口关联的中间变量(最好是接口执行之后能够看到中间变量的值,利于排错)
- 2.解决多个python文件之间的中间变量关联的问题
-
方案:
接口关联封装是通过一个yaml文件来保存中间变量,然后通过
读、写以及清空
来处理这些中间变量。
所有用例请求之前去清空还是所有用例请求之后去清空?(之前清空)
-
项目根目录下创建一个名为
extract.yaml
的yaml文件(文件名可以自定义) -
安装
pyyaml
插件pip install pyyaml
-
任意创建一个python文件进行函数封装,内如如下:
import yaml # 读取yaml文件 def read_yaml(key): with open("extract.yaml", encoding="utf-8") as f: result = yaml.safe_load(f) return result[key] # 写入内容到yaml文件 def write_yaml(data): with open("extract.yaml", mode="a", encoding="utf-8") as f: yaml.dump(data, stream=f, allow_unicode=True) # 清空yaml文件内容 def clean_yam(): with open("extract.yaml", mode="w", encoding="utf-8") as f: pass
-
接口关联使用
-
接口请求前清空extract.yaml文件存储的中间变量内容(项目根目录下创建一个名为conftest.py的文件(文件名称不可变))
import pytest from commons.yaml_util import clean_yam # 接口请求前清空extract.yaml文件内容 @pytest.fixture(scope="session", autouse=True) def clean_extract(): clean_yam()
三、接口自动化测试框架封装技术点:数据和代码分离实现数据驱动(通过数据驱动实现正反例)
- 分层(三层架构):基础封装层、用例层、数据层
1.创建一个读取yaml测试用例的方法
2.yaml文件测试用例的格式
3.通过@pytest.mark.parametrize()
使用