解决接口测试中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请求,就可以了。

  • 4
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值