這里介紹我在練習request用法時遇到的接口關聯問題,指下面的接口會用到之前接口返回的某個值。例如一個平台的登陸接口會返回一個token,后面的每個接口的請求頭都會帶這個字段。
接口介紹:
登陸接口,如下圖:
我需要提取這個authorization字段,在下一個接口調用時放到請求頭中,如下圖:
實現方法:
我把兩個接口分開寫的,這里看各自實際情況哈
OpenToken.py
import requests
import logging
def get_token():
logging.captureWarnings(True)
payload={'userName':'xxx',
'passWord':'xxx'
}
urls='xxxx'
r=requests.post(url=urls,data=payload,verify = False)
print("Status code:",r.status_code)
token=r.json()['result']['authorization']
print(token)
return token
get_token()
OpenMyList.py
import requests
import unittest
import logging
from Testtbuilding.OpenToken import get_token
class Mylist(unittest.TestCase):
def test_my_list(self):
logging.captureWarnings(True)
url='xxxx'
header={'authorization':get_token()}
list=requests.post(url,headers=header,timeout=5,verify = False)
# print(header)
print(list.json())
self.assertIs(list.json()['code'],1)
self.assertIs(list.status_code,200)
self.assertIs(len(list.json()['result']),6)
在第一個文件中我把authorization提取出來,因為第一個接口的返回格式authorization被包了兩層,可以看上面接口截圖中的內容,所以寫成
token=r.json()['result']['authorization']這個格式,如果是在最外層就不需要前面的result那一層。
第二個文件中,把authorization放進header里,直接調用了第一個文件中的方法,header={'authorization':get_token()},注意在get_token方法里一定要有返回值,
要不然你拿到的就是None。