在進(jìn)行接口測試的時(shí)候,我們會(huì)調(diào)用多個(gè)接口發(fā)出多個(gè)請(qǐng)求,在這些請(qǐng)求中有時(shí)候需要保持一些共用的數(shù)據(jù),例如cookies信息。
妙用1
requests庫的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庫的session對(duì)象還能為我們提供請(qǐng)求方法的缺省數(shù)據(jù),通過設(shè)置session對(duì)象的屬性來實(shí)現(xiàn)。
舉個(gè)栗子,設(shè)置請(qǐng)求的auth和headers默認(rèn)的缺省參數(shù):
# 創(chuàng)建一個(gè)session對(duì)象 s = requests.Session() # 設(shè)置session對(duì)象的auth屬性,用來作為請(qǐng)求的默認(rèn)參數(shù) s.auth = ('user', 'pass') # 設(shè)置session的headers屬性,通過update方法,將其余請(qǐng)求方法中的headers屬性合并起來作為最終的請(qǐng)求方法的headers s.headers.update({'x-test': 'true'}) # 發(fā)送請(qǐng)求,這里沒有設(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ì)話的參數(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變化了,也就是說方法層的參數(shù)覆蓋了session的屬性。
注意2:在request請(qǐng)求中,省略session對(duì)象中設(shè)置的屬性,只需簡單地在方法層參數(shù)中將那個(gè)鍵的值設(shè)置為 None ,那個(gè)鍵就會(huì)被自動(dòng)省略掉。
再舉個(gè)栗子:
TBD
總結(jié)
以上就是本文關(guān)于python中requests庫session對(duì)象的妙用詳解的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Python面向?qū)ο缶幊袒A(chǔ)解析(一)、13個(gè)最常用的Python深度學(xué)習(xí)庫介紹等,有什么問題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家的。
新聞熱點(diǎn)
疑難解答
圖片精選