如何将pytest接口自动化中的token关联登录成?

摘要:在PC端登录公司的后台管理系统或在手机上登录某个APP时,经常会发现登录成功后,返回参数中会包含token,它的值为一段较长的字符串,而后续去请求的请求头中都需要带上这个token作为参数,否则就提示需要先登录。 这其实就是状态或会话保持的
在PC端登录公司的后台管理系统或在手机上登录某个APP时,经常会发现登录成功后,返回参数中会包含token,它的值为一段较长的字符串,而后续去请求的请求头中都需要带上这个token作为参数,否则就提示需要先登录。 这其实就是状态或会话保持的第三种方式token。 一. 什么是token token 由服务端产生,是客户端用于请求的身份令牌。第一次登录成功时,服务端会生成一个包含用户信息的加密字符串token,返回给客户端并保存在本地,后续客户端只需要带上token进行请求即可,无需带上用户名密码。 token原理简单概括如下: 用户首次登录成功后,服务端会生成一个token值,服务端会将它保存保存在数据库中,同时也会将它返回给客户端; 客户端拿到token值后,保存在本地; 后续客户端再次发送除登录外的其他请求时,会把保存在本地的token值作为参数一起发送给服务端; 服务端收到客户端的请求后,会拿发送过来的token值与保存在数据库中的token值进行比较; 如果两个token值相同, 则说明当前用户处于登录状态; 如果数据库中没有这个token值或者token值已经生效,则需用户重新登录。 二. token场景处理 公司某管理后台系统,登录后返回token,接着去请求其他接口时请求头中都需要加上这个token,否则提示请先登录。 请求该系统的登录接口如下: # @author: 给你一页白纸 # 微信公众号:测试上分之路 import requests import json headers = {"Content-Type": "application/json;charset=utf8"} url = "http://127.0.0.1:5000/login" _data = { "username": "刘德华", "password": "123456" } res = requests.post(url=url, headers=headers, json=_data).text print(res) 结果如下: { "code": 1000, "msg": "登录成功!", "token": "sh34ljjl08s32730djsh34ljjl08s32730djsh34ljjl08s32730djsh34ljjl08s32730djsh34ljjl08s32730djsh34ljjl08s32730dj" } 在对扎样的项目做接口自动化测试时,需要先请求登录接口拿到token,再去请求别的接口。每次请求其他接口时先请求一次登录接口,这样做虽然可行,但这样不仅会降低自动化的执行效率,而且每次都请求登录也会对服务器资源造成浪费。 这里介绍如下两种处理思路。 1. 思路一 在执行用例之前,先请求登录接口,并将返回的token值存储在文件中(如yaml文件),后续请求需要用到token值则从该文件。 python中yaml文件的读写请参考我之前的文章Python读写yaml文件(使用PyYAML库)。 1,运行接口自动化测试框架,初始化时先请求登录接口,获取token值,并写入指定的yaml文件中。
阅读全文