登陆时登录成功后服务器会返回一个token,这个token作为第二步骤的入参;第二个步骤请求成功后服务器会返回一个新token,然后这个token作为第三步骤的入参!如此一来的话,要用postman做接口测试,那么就要解决token这个参数的关联问题:
第一,首先将这三个要测试的接口写成collection:
第二,要设置postman的环境,设置名称,url,以及token(只需要设置key就行),如下图:
第三步,在Postman软件的Tests中写以下代码,设置环境变量
第四步,修改第二以及第三个接口的入参的tokend值,格式用双花括号:{{token}} 格式
到此就设置完成了,我们选择登陆接口点击send,此时token就会显示在环境变量中了,这时第二个接口就可以执行了;然后再执行第三个接口,此时这个流程就可以跑通了!
总结:其实像这样的1步骤产生token,2步骤关联1步骤的token,3步骤关联2步骤的token,4步骤关联3步骤的token ,这种情况我也是第一次接触,这种情况与我司的项目不同,我司项目中只要token有效期内就行,不会存在步骤间这种紧密的依赖关系。
如果把这种项目的接口写成自动化脚本的话也比较冗长,因为我要在一个py中同时从步骤1写到步骤4.这样代码比较长了,代码如下:
#coding:utf-8
import requests,unittest
def chaxun():
u'查询接口'
s = requests.session()
url = 'http://183.59.xxx.xx:8080/restful/api/authentication'
#登录的入参
in_data = {
'username': "sendi",
'password': "2MDL010618",
'appid':"HDC2054490406A"
}
#请求头部
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
'Connection': 'keep-alive',
}
#发送请求
r =s.post(url,headers = header,data = in_data)
#获取token
t = r.json()['token']
print('登录返回的token是:%s' % t)
#'信息查询接口'
url_2 = 'http://183.59.xxx.xx:8080/restful/api/custinfo'
#请求头部
header2 = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
'Connection': 'keep-alive'
}
#查询的入参
in_data_2 = {
'customer':'佛山威立雅垃圾填埋处理有限公司',
'elecode':'IPCYW2267381990',
'elename':'IPCYW2267381990',
'NEName':'高明杨梅杨梅二楼综合机房01/S-T64G-1',
'portName':'gei_4/8',
'disabled':0,
'is_vip':0,
'page':1,
'pagesize':10,
'token':t
}
r1 = s.post(url_2,headers = header2,data = in_data_2)
print(r1.json())
t1 = r1.json()['token']
print('查询返回的token是:%s' % t1)
url_3 = 'http://183.59.xxx.xx:8080/restful/api/custflow'
# 登录的入参
to1 = 'Bearer '+ t1
# 请求头部
header3 = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
'Connection': 'keep-alive'
}
in_data_3 = {
'customer': '广东丹姿集团有限公司',
'elecode': 'IPCYW2270156401',
'elename': 'IPCYW2270156401',
'starttime': '2018061217',
'endtime': '2018062418',
'type': 0,
'page': 1,
'pagesize': 10,
'token': t1
}
r3 = s.post(url_3, headers=header, data = in_data_3)
print(r3.json())
if __name__=='__main__':
chaxun()
转:https://blog.csdn.net/xgh1951/article/details/81665285
来源:oschina
链接:https://my.oschina.net/u/4273421/blog/3587505