解决接口测试中token失效问题

接口测试中我们经常是从登录接口获取token,其他的接口在header中传入新的token才可以正确发送请求。所以在做接口自动化测试时,我们不能将token写死,而是应该每次请求就重新获取新的token,以保证接口请求可以正常得到正确的返回值。

我的解决思路是:在每次发送带token的请求接口前,先调用登录接口获取token,然后将该值更新到需要测试的接口头文件中。

根据post请求的两种最常用方式分别进行以下处理:

1.application/x-www-form-urlencoded   

2.application/json

一.application/x-www-form-urlencoded  

1.我先通过登录接口获取到token,将此时获取的token设置为全局变量(Set Global Variable  ${token})

2.再来看看form格式提交数据的格式,header是这样设置的,除了token的值,其他数据从excel文件中读取。

3.如上所示,第一步中获取到的token便赋值给了header中的token,接着传给Post Request,成功发起post请求。

这样就不需要每次发送请求时手动去更新token,也可以避免token失效的问题。

二.application/json

1.仍然是先通过登录接口获取到token,设置为全局变量

2.先来看下json格式是如何提交数据的,所有的入参使用json串的方式传给data

json串格式的数据,包含header和body参数,token在header中,如:

{"header":{ "deviceType":"H5","format":"json","sign":"19B7A0E07483E944153E22C4588BEFBC","signMethod":"MD5","timeStamp":"1523602601003","token":"d076d7b7ab004bae98e8a13cf5489d99"},

"body":{"Id":"893905"}}

因此我认为使用第一种方式不太好操作,则考虑直接写一个替换token的脚本

# -*- coding: utf-8 -*-
 
import json
 
def update_token(data,token):
    a=json.loads(data)
    a['header']['token']=token
    return a
pass
    
if __name__ == "__main__":
    pass
这里需要注意的地方是,我存放在excel中的data虽然看起来是一个json串的格式,实际上传给update_token时是一个字符串,需要进行格式转换,才能成功提取到header中的token,否则就会报错。

json.loads()用于将str类型的数据转成dict, json.dumps()用于将dict类型的数据转成str

3.将updatToken.py以library导入到ride中,即可实现data数据的token更新,然后再发送post请求,就可以了。
————————————————
版权声明:本文为CSDN博主「朝天椒的夏天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_15158911/article/details/80472954

### 如何在Apipost中进行登录接口测试存储Token #### 使用Apipost进行登录接口测试 在Apipost中执行登录接口测试时,通常需要模拟发送请求到服务器端以获取认证所需的`access_token`或`Bearer Token`。以下是具体操作方法: 1. **创建新的HTTP请求** 打开Apipost工具,在左侧导航栏选择“新建”,然后选择“HTTP请求”。输入目标URL地址以及对应的HTTP方法(通常是POST),用于发起登录请求。 2. **设置请求头(Headers)** 如果API文档指定了特定的头部字段,则应在Headers选项卡下配置这些参数。例如,某些服务可能要求指定Content-Type为`application/json`或其他形式的数据编码标准[^3]。 3. **填写Body内容** 对于大多数基于表单提交或者JSON格式传递账号密码的情况,可以在Body标签页里按照实际需求选用form-data/x-www-form-urlencoded/raw等方式录入必要的键值对信息,比如username/password等项目[^1]。 4. **运行调试命令** 完成上述准备工作之后即可点击Send按钮触发网络通信过程,并观察返回的结果状态码及其主体部分是否有预期中的token字符串存在。 #### 自动化处理与保存Access Tokens 为了简化后续多次重复使用的麻烦程度,可以考虑采用环境变量机制来管理临时性的敏感凭证资料——即所谓的"动态替换功能": - 当成功接收到响应消息体内的有效载荷后(假设位于data属性下的accessToken子项),可通过内置脚本编辑器编写一段简单的JS逻辑提取出来赋给预先定义好的全局/局部作用域名称空间下的某个标识符位置上;如此一来便实现了跨不同模块之间共享同一份最新有效的鉴权依据的目的。 ```javascript // 假设这是来自服务器回复的一个典型样例结构 pm.environment.set("authToken", pm.response.json().data.accessToken); ``` 以上代码片段展示了如何利用Postman Collection Runner类似的插件特性捕获解析后的关键成分存入当前会话级别的storage容器当中以便稍后再调用其他关联资源链接的时候能够自动填充进去相应的位置从而达到无缝衔接的效果[^2]. --- ### 注意事项 确保每次更新完个人隐私类别的数值之后都要记得及时清除掉残留记录以防泄露风险发生。另外也要留意官方给出的有效期限提示以免超期失效造成不必要的困扰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值