测试框架结构
Test runner:执行器,执行测试用例的引擎
Test case:测试用例
Test fixtures:测试夹具,用例集执行之前、之后的操作
Test suites:测试套件,测试用例的集合或者排序关系
Test execution:单个用例执行之前、之后的操作
Test result formatter:执行结果
Assertions:断言
接口基本信息
常见接口请求体
上传文件
r = requests.post("url",files={"文件名":open("具体的文件及格式例如:a.txt","rb")})
设置超时
r = requests.get("url",timeout = 0.01)
request设置代理
- 方法体里写
proxy={
# 此处的端口是代理软件设置的端口
"http":"http://127.0.0.1:8888",
"https":"http://127.0.0.1:8888"
}
# veruft=false,意思是不认证,否则需要配置证书
r = requests.post("url","data/json/params",proxies=proxy, verify=False)
JSONPath获取多层结构的响应体的数据
- JSONPath规则
- JSONPath使用
# JSONPath第一个参数格式要求为dict,所以不要用r.text
# JSONPath第二个参数为jsonpath的表达式
jsonpath.jsonpath(r.json(),"$..age")
接口鉴权
- 请求头加token
- cookies
断言
响应信息数据极为庞大
- 针对少量且主要的业务字段断言
- 其他字段不做数据正确性断言,只做类型与整体结构的校验
- 与前面的版本进行diff,对比差异化的地方
- JSONSchema作用
- 定义校验JSON数据的结构
- 校验JSON数据的一致性
- 校验API接口请求和响应
- JSONSchema使用步骤
- 预先生成对应结构的Schema
- 将实际获取到的响应与生成的Schema进行对比
- JSONSchema的生成方式
- 安装genson
- 调用方法生成对应的JSONSchema数据结构
from genson import SchemaBuilder
def generate_jsonschema(cls, obj):
# 实例化jsonschema
builder = SchemaBuilder()
# 传入被转换的对象
builder.add_object(obj)
# 转换成schema数据
return builder.to_schema()
3. JSONSchema验证
1.安装pip install jsonschema
2.调用validate()进行验证
def schema_validate(obj, schema):
'''
对比python对象与生成的JSONSchema的结构是否一致
'''
try:
validate(instance=obj, schema=schema)
return True
except Exception as e:
return False
环境管理 (多环境切换)
1. 使用环境管理文件
yaml
ini
常量类
2. 使用不同的文件管理不同的环境
日常调试的时候,有三种方法设置环境变量,解决os.getenv()获取不到环境变量的问题
通过环境变量,切换环境
# 设置环境变量
# mac设置环境变量
export env=dev
# windows设置环境变量
set env=dev
# 代码中使用
default = os.getenv("环境变量名称env",default="dev")
3. 在接口用例中只指定path,不指定URL
多协议封装
将多种响应的格式统一成一种(json),方便测试的时候断言
接口加解密
1.通用加密算法
场景:了解数据使用的通用加密算法,例如base64.
解决方案:使用通用的解密算法在获取加密响应信息后》对数据进行解密操作研发提供加解密 lib
2.研发提供加解密 lib
场景:不了解对应的加密算法
解决方案:需要研发提供加解密对应的Iib 包,完成数据解密
3.提供远程解析服务
场景:既不是通用加密算法,研发也无法提供lib 包
解决方案:需要加密方提供远程解析服务,这样既解决了加解密问题,研发方也无需担心加解密算法暴露的问题