接口测试中我们经常是从登录接口获取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