最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python+pytest接口自動(dòng)化之session會(huì)話保持的實(shí)現(xiàn)

 更新時(shí)間:2022年06月24日 10:26:49   作者:自動(dòng)化測(cè)試七叔  
在接口測(cè)試的過程中,經(jīng)常會(huì)遇到有些接口需要在登錄的狀態(tài)下才能請(qǐng)求,本文主要介紹了python+pytest接口自動(dòng)化之session會(huì)話保持的實(shí)現(xiàn),感興趣的可以了解一下

前言

在接口測(cè)試的過程中,經(jīng)常會(huì)遇到有些接口需要在登錄的狀態(tài)下才能請(qǐng)求,否則會(huì)提示請(qǐng)登錄,那么怎樣解決呢?我們可以通過Cookie繞過登錄,其實(shí)這就是保持登錄狀態(tài)的方法之一。那么今天筆者想講通過session進(jìn)行會(huì)話保持。

一、session(會(huì)話)

session,即會(huì)話。那么什么又是會(huì)話?我們來看一下會(huì)話的生存周期就能大致明白,如下:

開始:客戶端(通常是瀏覽器)-->發(fā)送第一個(gè)請(qǐng)求-->某應(yīng)用服務(wù)器,彼此成功建立連接,即創(chuàng)建會(huì)話;

會(huì)話中:客戶端接著請(qǐng)求該應(yīng)用服務(wù)器的其他資源;

結(jié)束:關(guān)閉客戶端(通常是瀏覽器)或者會(huì)話超時(shí),會(huì)話結(jié)束。

二、會(huì)話保持

會(huì)話保持,可以通俗的理解為使同一用戶發(fā)送的相關(guān)聯(lián)的請(qǐng)求處于同一個(gè)會(huì)話中不被斷開。比如使用session成功地登錄了某個(gè)網(wǎng)站,則在再次使用該session對(duì)象請(qǐng)求該網(wǎng)站的其他網(wǎng)頁時(shí),都會(huì)默認(rèn)使用該session中之前保存的cookie等參數(shù)去請(qǐng)求,而不需要再次登錄。

session會(huì)話保持大致原理如下:

  • 客戶端應(yīng)用第一次請(qǐng)求該應(yīng)用服務(wù)器時(shí),服務(wù)器會(huì)創(chuàng)建一個(gè)session,該session對(duì)象中會(huì)存儲(chǔ)特定的用戶會(huì)話所需的屬性及配置信息(如用戶信息或登錄狀態(tài)等),并保存在服務(wù)器中。
  • 創(chuàng)建session時(shí),會(huì)賦予其一個(gè)session ID,該session ID會(huì)被置于set-cookie中隨著請(qǐng)求返回給客戶端,并保存在本地的cookie中。
  • 后續(xù),客戶端請(qǐng)求本應(yīng)用中其他資源時(shí),服務(wù)器就會(huì)收到cookie中的session ID,并根據(jù)ID在內(nèi)存中查找之前創(chuàng)建的session對(duì)象,如果能找到且未過期,則說明是來自同一戶用的請(qǐng)求。

三、python進(jìn)行session會(huì)話保持

在接口自動(dòng)化測(cè)試中,某些情況下可以使用session會(huì)話保持機(jī)制來保持登錄狀態(tài),這樣就不需要每次清求接口都需要先登錄。

接下來,我們以查看TesterHome網(wǎng)站上個(gè)人的通知消息、個(gè)人信息為例,來說明在python接口自動(dòng)化測(cè)試中怎樣利用session保持登錄狀態(tài)。

注意:

  • 這里我先嘗試請(qǐng)求登錄接口構(gòu)造session,然后再利用該session去請(qǐng)求其他接口,仍然提示需先登錄,說明該網(wǎng)站此種方式行不通。
  • 因?yàn)榈顷懞筇D(zhuǎn)到了首頁,所以這里我們可以利用請(qǐng)求首頁接口構(gòu)造session,然后就可以利用該session去請(qǐng)求其他接口了。

1、首先,F(xiàn)iddler抓包獲取登錄成功后請(qǐng)求首頁接口時(shí)的cookie

 2、拿到cookie,利用請(qǐng)求首頁接口構(gòu)造session對(duì)象。

import requests
 
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36",
    "cookie": '如上面截圖所示獲取的cookie,即登錄成功后跳轉(zhuǎn)時(shí),請(qǐng)求首頁接口https://testerhome.com/時(shí)的cookie'
}
 
# 構(gòu)造一個(gè)全局session對(duì)象
S = requests.session()
 
# 使用session對(duì)象即S模擬登錄成功后請(qǐng)求首頁接口,更新S
h_url = "https://testerhome.com/"
h_res = S.get(url=h_url, headers=headers).text

這一步會(huì)得到的session對(duì)象S中就包含了登錄成功后的cookie等信息了,再使用該session對(duì)象去請(qǐng)求其他接口就不需要再次登錄了。

3、使用上一步得到的session對(duì)象,查看個(gè)人通知消息、個(gè)人信息接口。

# 使用session對(duì)象S請(qǐng)求個(gè)人通知消息接口
n_url = "https://testerhome.com/notifications/personal"
n_res = S.get(url=n_url).text
print(n_res)
 
# 使用session對(duì)象S請(qǐng)求個(gè)人信息接口
s_url = "https://testerhome.com/setting"
s_res = S.get(url=s_url).text
print(s_res)

請(qǐng)求個(gè)人信息接口,執(zhí)行結(jié)果如下:

 4、完整代碼如下:

import requests
 
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36",
    "cookie": '如上面截圖所示獲取的cookie,即登錄成功后跳轉(zhuǎn)時(shí),請(qǐng)求首頁接口https://testerhome.com/時(shí)的cookie'
}
 
# 構(gòu)造一個(gè)全局session對(duì)象
S = requests.session()
 
# 使用session對(duì)象即S模擬登錄成功后請(qǐng)求首頁接口,更新S
h_url = "https://testerhome.com/"
h_res = S.get(url=h_url, headers=headers).text
 
# 使用session對(duì)象S請(qǐng)求個(gè)人通知消息接口
n_url = "https://testerhome.com/notifications/personal"
n_res = S.get(url=n_url).text
print(n_res)
 
# 使用session對(duì)象S請(qǐng)求個(gè)人信息接口
s_url = "https://testerhome.com/setting"
s_res = S.get(url=s_url).text
print(s_res)

總結(jié)

session與cookie是不同的機(jī)制。

相同點(diǎn):兩者都能記錄用戶的狀態(tài),且都是由服務(wù)端生成。

不同點(diǎn):cookie是存儲(chǔ)在本地客戶端的,而session則存儲(chǔ)在服務(wù)端。

兩者之間存在聯(lián)系:session會(huì)話保持機(jī)制需要依賴cookie,因?yàn)閟ession ID是存儲(chǔ)在cookie中的。

到此這篇關(guān)于python+pytest接口自動(dòng)化之session會(huì)話保持的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python pytest session會(huì)話保持內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Ruby元編程基礎(chǔ)學(xué)習(xí)筆記整理

    Ruby元編程基礎(chǔ)學(xué)習(xí)筆記整理

    元編程Metaprogramming是指編寫能夠操作其他程序的程序,例如C語言中的宏,是編程中的一項(xiàng)高級(jí)技巧,這里我們立足基礎(chǔ),來看一下Ruby元編程基礎(chǔ)學(xué)習(xí)筆記整理.
    2016-07-07
  • python爬蟲之場(chǎng)內(nèi)ETF基金獲取

    python爬蟲之場(chǎng)內(nèi)ETF基金獲取

    這篇文章主要介紹了python爬蟲之場(chǎng)內(nèi)ETF基金獲取,ETF?是一種場(chǎng)內(nèi)交易型基金,可以在盤中進(jìn)行交易,交易性比場(chǎng)外基金強(qiáng)一點(diǎn),下文基于python的相關(guān)資料展開,需要的小伙伴可以參考一下
    2022-05-05
  • 利用Python編寫簡(jiǎn)易的錄制屏幕小工具

    利用Python編寫簡(jiǎn)易的錄制屏幕小工具

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語言編寫一個(gè)簡(jiǎn)易的錄制屏幕小工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下
    2022-08-08
  • Python實(shí)現(xiàn)分?jǐn)?shù)序列求和

    Python實(shí)現(xiàn)分?jǐn)?shù)序列求和

    今天小編就為大家分享一篇Python實(shí)現(xiàn)分?jǐn)?shù)序列求和,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python中WebService客戶端接口調(diào)用及身份驗(yàn)證的問題

    Python中WebService客戶端接口調(diào)用及身份驗(yàn)證的問題

    這篇文章主要介紹了Python中WebService客戶端接口調(diào)用及身份驗(yàn)證的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python爬取數(shù)據(jù)并寫入MySQL數(shù)據(jù)庫的實(shí)例

    Python爬取數(shù)據(jù)并寫入MySQL數(shù)據(jù)庫的實(shí)例

    今天小編就為大家分享一篇Python爬取數(shù)據(jù)并寫入MySQL數(shù)據(jù)庫的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 教你用Type Hint提高Python程序開發(fā)效率

    教你用Type Hint提高Python程序開發(fā)效率

    本文通過介紹和實(shí)例教大家如何利用Type Hint來提升Python程序開發(fā)效率,對(duì)大家使用python開發(fā)很有幫助,有需要的參考學(xué)習(xí)。
    2016-08-08
  • python中的accumulate()函數(shù)示例詳解

    python中的accumulate()函數(shù)示例詳解

    accumulate 函數(shù)是Python標(biāo)準(zhǔn)庫 itertools 模塊中的一個(gè)函數(shù),用于生成累積計(jì)算的結(jié)果,這篇文章主要介紹了python中的accumulate()函數(shù),需要的朋友可以參考下
    2023-09-09
  • Python爬蟲簡(jiǎn)單運(yùn)用爬取代理IP的實(shí)現(xiàn)

    Python爬蟲簡(jiǎn)單運(yùn)用爬取代理IP的實(shí)現(xiàn)

    這篇文章主要介紹了Python爬蟲簡(jiǎn)單運(yùn)用爬取代理IP的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python 不關(guān)閉控制臺(tái)的實(shí)現(xiàn)方法

    python 不關(guān)閉控制臺(tái)的實(shí)現(xiàn)方法

    在win32下,雙擊python程序會(huì)打開dos窗口,但是執(zhí)行完畢后就會(huì)關(guān)閉,看不到輸出的結(jié)果
    2011-10-10

最新評(píng)論

河北省| 上蔡县| 大埔县| 闻喜县| 南华县| 西丰县| 连平县| 类乌齐县| 广州市| 龙州县| 吐鲁番市| 崇义县| 利辛县| 德安县| 阜城县| 东阳市| 柳河县| 百色市| 德化县| 浦江县| 乐亭县| 刚察县| 鲁甸县| 昌都县| 诸暨市| 体育| 大同市| 万山特区| 河源市| 邮箱| 桑日县| 南城县| 福州市| 民丰县| 揭东县| 密山市| 镇平县| 股票| 芜湖县| 青神县| 盐山县|