主要兼容以下情况
1. 静态的header
2. 加密处理
3. 固定的登录token
4. 动态加密的请求头
验证码逻辑和静态header:
验证码
一般验证码在测试环境的话,可以通过非前端手段去获取。或和开发人员沟通如何在测试环境内跳过验证码环节
自定义header
当然具体是什么header只有你们自己公司知道,这里以我遇到的情况为例
在测试环境大部分可以使用白名单header处理,如果仍然是动态的,这里改成 自己公司内部的加密方法去实现get_signature():
Signature = get_signature()
固定token(具体的字段根据实际去配置)
current_user.tmp_header = {"Authentication": current_user.user_token, "Signature": Signature}
动态加密
如果你的动态header与请求的接口或参数或其他id相关,那么就需要你在requests_process.py中添加请求加工(最终会打在测试对象的request方法中载入):
我这里添加了一个请求前的处理:requests_process.py
def resolve_signature(config_url, token):
# 根据url、token动态生成sign
...
def process_header(obj, current_user):
"""
处理header
:param obj: Test对象
:param current_user: 根据用户信息来获取配置
:return:
"""
# xxx项目那边需要动态的生成签名放入请求头
if current_user.test_config and current_user.test_config.get("Signature_dyanamic"):
_dy_header = resolve_signature(obj.request_info["url"], current_user.user_token)
obj.request_info["headers"].update({"Signature": _dy_header})
def pre_process(obj, current_user, *args, **kwargs):
"""伪中间件,不可返回数据,只能加工对象数据"""
process_url(obj)
process_header(obj, current_user)