在進行接口測試的時候,我們會調用多個接口發出多個請求,在這些請求中有時候需要保持一些共用的數據,例如cookies信息。
1、requests庫的session對象能夠幫我們跨請求保持某些參數,也會在同一個session實例發出的所有請求之間保持cookies。
s = requests.session()
# req_param = '{"belongId": "300001312","userName": "alitestss003","password":"pxkj88","captcha":"pxpx","captchaKey":"59675w1v8kdbpxv"}'
# res = s.post('http://test.e.fanxiaojian.cn/metis-in-web/auth/login', json=json.loads(req_param))
# # res1 = s.get("http://test.e.fanxiaojian.cn/eos--web/analysis/briefing")
# print(res.cookies.values()) 獲取登陸的所有session
2、requests庫的session對象還能為我們提供請求方法的缺省數據,通過設置session對象的屬性來實現
eg:
# 創建一個session對象
s = requests.Session()
# 設置session對象的auth屬性,用來作為請求的默認參數
s.auth = ('user', 'pass')
# 設置session的headers屬性,通過update方法,將其余請求方法中的headers屬性合並起來作為最終的請求方法的headers
s.headers.update({'x-test': 'true'})
# 發送請求,這里沒有設置auth會默認使用session對象的auth屬性,這里的headers屬性會與session對象的headers屬性合並
r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
上面的請求數據等於:{'Authorization': 'Basic dXNlcjpwYXNz', 'x-test': 'false'}
# 查看發送請求的請求頭
r.request.headers #打印響應中請求的所有header數據
res3 = s.get("http://pre.n.cn/irs-web/sso/login",cookies = cookie)
print(res3.request.headers.get("Cookie").split("IRSSID=")[-1])
print(type(res3.request.headers.get("Cookie").split("IRSSID=")[-1]))
print(res3.request._cookies)