1.先行了解:cookie,session,token
cookie:
- 概念:是服务器产生的,存在在客户端的一段文本信息。格式是字典
- 分类:
- 会话级即session:保存在内存,当浏览器关闭就会丢失
- 持久化:保存在硬盘,当失效时间到了就会丢失
###### 如何鉴权?/如何与http建立联系的?
* 客户端第一次访问服务器,服务器产生cookie并通过响应头的方法在set-cookie中传输到客户端,之后客户端请求服务器时会自动带上该cookie
- 缺点: 信息保存在客户端,敏感信息不安全
###### 鉴权解决方案:
* 取接口A的cookies并写入到yaml文件中;接口B读取yaml文件中的cookies并作为参数传递给请求参数Cookies
session:
-
概念:服务器产生的且保存在服务器的.
###### 如何鉴权?
* 客户第一次访问服务器的时候,服务器端保存一个加密的sessionid,通过cookie将sessionid保存到客户端。客户再次请求服务器端的时候只发送sessionId
-
优点: 解决了cookie敏感信息保存在客户端不安全的问题
-
缺点:用户体量大时,会导致服务器崩溃
###### 鉴权方案: 使用requests.seesion()自动接口关联cookie
*
class project:
# 创建类变量 session对象
session = requests.session()
def func(self):
project.seesion.request(method,url,data)
cookie与session的区别
|--------|------------|-------------|
| **区别** | **cookie** | **session** |
| 存储位置 | 保存在本地 | 保存在服务器 |
| 存取方式 | 仅可保存ASCII码 | 任意数据类型 |
| 数据安全性 | 相对较差 | 相对较好 |
| 有效期 | 长时间存在 | 会话结束/浏览器关闭 |
| 存储大小 | 一般不会超过4k | 无限制 |
token
-
概念:服务器产生,保存在文件/数据库
-
分类:
-
access_token:有15分钟时间限制
-
refresh_token: 有15天
-
###### 如何鉴权?
* 用户登录后,发送一个token令牌,下次用户请求时带上token,服务器端解密
###### 鉴权方案:
* 取接口A的响应头中的token并写入到yaml文件中;接口B读取yaml文件中的token并作为headers的参数传递
sign签名
- 应用场景: 第三方支付,银行,金融等安全要求比较高的
2. 验证码的功能处理方式
- 方式一: 去掉验证码(图片类/短信类)
- 方式二: 设置万能码(固定的数字验证码/固定图片)
- 方式三:添加登录成功的cookie
- 在selenium中使用add_cookie()方法将用户名和密码写入到cookie中来跳过验证
3. 对数据库的校验,使用的场景
- 用例断言
- 脚本执行前后的数据初始化和清理
- 相关接口是否执行成功
4.接口自动化遇到的问题?
- Q:接口文档不完整
- A:与开发人员沟通补充文档或者给出接口示例
- Q:接口请求参数的多样性
- A: 数据驱动,对请求参数自动化
- Q: 因网络,服务器等原因导致的用例不稳定
- A: 加入重试机制和日志记录功能,保证测试的稳定性
- Q: 接口的错误处理
- A: 加入异常处理机制
- Q: 代码质量问题
- A: 提高代码的可扩展性和可维护性,减少代码重复率
- Q:接口的请求频率问题
- A: 控制请求频率,防止系统崩溃
- Q: 接口变更的频繁
- A: 及时更新脚本CSDN
5