在進行接口測試的時候,我們會調用多個接口發出多個請求,在這些請求中有時候需要保持一些共用的數據,例如cookies信息。
妙用1
requests庫的session對象能夠幫我們跨請求保持某些參數,也會在同一個session實例發出的所有請求之間保持cookies。
舉個栗子,跨請求保持cookies,在命令行上輸入下面命令:
# 創建一個session對象 s = requests.Session() # 用session對象發出get請求,設置cookies s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') # 用session對象發出另外一個get請求,獲取cookies r = s.get("http://httpbin.org/cookies") # 顯示結果 r.text '{"cookies": {"sessioncookie": "123456789"}}' 妙用2
requests庫的session對象還能為我們提供請求方法的缺省數據,通過設置session對象的屬性來實現。
舉個栗子,設置請求的auth和headers默認的缺省參數:
# 創建一個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'}) # 查看發送請求的請求頭 r.request.headers 得到的請求頭部是這樣的:
{'Authorization': 'Basic dXNlcjpwYXNz', 'x-test': 'false'}
注意1:方法層的參數覆蓋會話的參數,舉個栗子:
將上面的請求中加上auth參數:
r = s.get('http://httpbin.org/headers', auth=('user','hah'), headers={'x-test2': 'true'}) 獲取該請求的請求頭
{'Authorization': 'Basic dXNlcjpoYWg=', 'x-test': 'false'}
我們發現,請求方法中的Authorization變化了,也就是說方法層的參數覆蓋了session的屬性。
注意2:在request請求中,省略session對象中設置的屬性,只需簡單地在方法層參數中將那個鍵的值設置為 None ,那個鍵就會被自動省略掉。
再舉個栗子:
TBD
總結
以上就是本文關于python中requests庫session對象的妙用詳解的全部內容,希望對大家有所幫助。有什么問題可以隨時留言,小編會及時回復大家的。
新聞熱點
疑難解答