python中requests庫(kù)session對(duì)象的妙用詳解
在進(jìn)行接口測(cè)試的時(shí)候,我們會(huì)調(diào)用多個(gè)接口發(fā)出多個(gè)請(qǐng)求,在這些請(qǐng)求中有時(shí)候需要保持一些共用的數(shù)據(jù),例如cookies信息。
妙用1
requests庫(kù)的session對(duì)象能夠幫我們跨請(qǐng)求保持某些參數(shù),也會(huì)在同一個(gè)session實(shí)例發(fā)出的所有請(qǐng)求之間保持cookies。
舉個(gè)栗子,跨請(qǐng)求保持cookies,在命令行上輸入下面命令:
# 創(chuàng)建一個(gè)session對(duì)象 s = requests.Session() # 用session對(duì)象發(fā)出get請(qǐng)求,設(shè)置cookies s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') # 用session對(duì)象發(fā)出另外一個(gè)get請(qǐng)求,獲取cookies r = s.get("http://httpbin.org/cookies") # 顯示結(jié)果 r.text '{"cookies": {"sessioncookie": "123456789"}}'
妙用2
requests庫(kù)的session對(duì)象還能為我們提供請(qǐng)求方法的缺省數(shù)據(jù),通過(guò)設(shè)置session對(duì)象的屬性來(lái)實(shí)現(xiàn)。
舉個(gè)栗子,設(shè)置請(qǐng)求的auth和headers默認(rèn)的缺省參數(shù):
# 創(chuàng)建一個(gè)session對(duì)象 s = requests.Session() # 設(shè)置session對(duì)象的auth屬性,用來(lái)作為請(qǐng)求的默認(rèn)參數(shù) s.auth = ('user', 'pass') # 設(shè)置session的headers屬性,通過(guò)update方法,將其余請(qǐng)求方法中的headers屬性合并起來(lái)作為最終的請(qǐng)求方法的headers s.headers.update({'x-test': 'true'}) # 發(fā)送請(qǐng)求,這里沒(méi)有設(shè)置auth會(huì)默認(rèn)使用session對(duì)象的auth屬性,這里的headers屬性會(huì)與session對(duì)象的headers屬性合并 r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'}) # 查看發(fā)送請(qǐng)求的請(qǐng)求頭 r.request.headers
得到的請(qǐng)求頭部是這樣的:
{'Authorization': 'Basic dXNlcjpwYXNz', 'x-test': 'false'}
注意1:方法層的參數(shù)覆蓋會(huì)話(huà)的參數(shù),舉個(gè)栗子:
將上面的請(qǐng)求中加上auth參數(shù):
r = s.get('http://httpbin.org/headers', auth=('user','hah'), headers={'x-test2': 'true'})
獲取該請(qǐng)求的請(qǐng)求頭
{'Authorization': 'Basic dXNlcjpoYWg=', 'x-test': 'false'}
我們發(fā)現(xiàn),請(qǐng)求方法中的Authorization變化了,也就是說(shuō)方法層的參數(shù)覆蓋了session的屬性。
注意2:在request請(qǐng)求中,省略session對(duì)象中設(shè)置的屬性,只需簡(jiǎn)單地在方法層參數(shù)中將那個(gè)鍵的值設(shè)置為 None ,那個(gè)鍵就會(huì)被自動(dòng)省略掉。
再舉個(gè)栗子:
TBD
總結(jié)
以上就是本文關(guān)于python中requests庫(kù)session對(duì)象的妙用詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Python面向?qū)ο缶幊袒A(chǔ)解析(一)、13個(gè)最常用的Python深度學(xué)習(xí)庫(kù)介紹等,有什么問(wèn)題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家的。
- python中requests模塊的使用方法
- python采用requests庫(kù)模擬登錄和抓取數(shù)據(jù)的簡(jiǎn)單示例
- Python使用requests發(fā)送POST請(qǐng)求實(shí)例代碼
- python中requests使用代理proxies方法介紹
- python?如何使用requests下載文件
- Python爬蟲(chóng)庫(kù)requests獲取響應(yīng)內(nèi)容、響應(yīng)狀態(tài)碼、響應(yīng)頭
- Python3使用requests包抓取并保存網(wǎng)頁(yè)源碼的方法
- 詳解Python requests 超時(shí)和重試的方法
- Python requests timeout的設(shè)置
- 解決Python requests 報(bào)錯(cuò)方法集錦
- Python中Requests庫(kù)的實(shí)現(xiàn)示例
相關(guān)文章

在Python中如何優(yōu)雅地創(chuàng)建表格的實(shí)現(xiàn)

python如何實(shí)現(xiàn)斐波那契數(shù)列

Django1.7+python 2.78+pycharm配置mysql數(shù)據(jù)庫(kù)

python實(shí)現(xiàn)帶聲音的摩斯碼翻譯實(shí)現(xiàn)方法

python numpy實(shí)現(xiàn)多次循環(huán)讀取文件 等間隔過(guò)濾數(shù)據(jù)示例