测试岗位面试题更新 2026-08-05

请说明在使用 Requests 库进行接口自动化测试时,对于需要签名的接口参数(如 sign)以及 Token 认证,通常有哪些处理方式?

测试编码实现技术原理方案权衡

考察说明

考查对 Requests 库中签名参数和 Token 认证处理方法的掌握程度。

回答思路

  1. 【回答框架 1】对于 sign 签名,常见做法是在请求发送前,根据接口文档规定的算法(如 MD5、SHA1、HMAC)对相关参数进行排序、拼接,并加入密钥,计算出签名值,然后作为请求参数或请求头的一部分。Requests 库本身不提供签名功能,需要借助 hashlib、hmac 等模块实现。
  2. 【回答框架 2】对于 Token 认证,通常有两种方式:一种是将 Token 放在请求头(如 Authorization: Bearer <token>),另一种是放在请求参数中。在 Requests 中,可以通过构造请求头字典并传入 headers 参数来携带 Token,或者通过 params 参数传递。
  3. 【回答框架 3】在自动化测试框架中,通常会将签名和 Token 的生成封装成通用函数或类,以便复用。可以使用 requests.Session 对象来保持会话状态,自动处理 Cookie,同时在请求发出前动态生成签名和 Token。
  4. 【回答框架 4】如果接口要求对时间戳、随机数等参与签名,需要动态生成这些值,并保证每次请求的签名有效。对于 Token 过期的情况,需要在测试框架中实现自动刷新机制,比如捕获 401 响应后重新获取 Token 并重试请求。
  5. 【关键点 1】签名处理需按接口文档要求,使用 hashlib 或 hmac 对参数进行加密,并注意参数排序和编码规则。
  6. 【关键点 2】Token 通常放在请求头(如 Authorization)中,可通过修改请求头字典传递。
  7. 【关键点 3】建议封装签名和 Token 生成逻辑,使用 requests.Session 保持会话并动态处理认证信息。
  8. 【关键点 4】对于 Token 过期,应设计自动刷新和重试机制,保证测试稳定性。
  9. 【关键点 5】签到参数可能包含时间戳、随机数,需保证每次请求生成新值。
  10. 【易错点 1】签名算法中参数拼接顺序错误或未对特殊字符编码,导致签名校验失败。
  11. 【易错点 2】将 Token 放在请求体或 URL 中,而接口要求放在请求头中,导致认证失败。
  12. 【易错点 3】签名中使用了固定值(如固定时间戳),造成签名过期或被识别为非法请求。