亚洲精品中文免费|亚洲日韩中文字幕制服|久久精品亚洲免费|一本之道久久免费

<optgroup id="cczp1"><ruby id="cczp1"><cite id="cczp1"></cite></ruby></optgroup>
  • <acronym id="cczp1"></acronym>
    <acronym id="cczp1"><option id="cczp1"><ol id="cczp1"></ol></option></acronym>
    <delect id="cczp1"></delect>
    <center id="cczp1"></center>
    <delect id="cczp1"></delect><em id="cczp1"><button id="cczp1"><blockquote id="cczp1"></blockquote></button></em>
    1. <optgroup id="cczp1"><td id="cczp1"><dfn id="cczp1"></dfn></td></optgroup>

      python+pytest接口自動(dòng)化之session會(huì)話保持

      python+pytest接口自動(dòng)化之session會(huì)話保持

      前言

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

      一、session(會(huì)話)

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

      開(kāi)始:客戶端(通常是瀏覽器)–>發(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ì)話中不被斷開(kāi)。比如使用session成功地登錄了某個(gè)網(wǎng)站,則在再次使用該session對(duì)象請(qǐng)求該網(wǎng)站的其他網(wǎng)頁(yè)時(shí),都會(huì)默認(rèn)使用該session中之前保存的cookie等參數(shù)去請(qǐng)求,而不需要再次登錄。

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

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

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

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

      注意:

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

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

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

      import requestsheaders = { “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)求首頁(yè)接口https://testerhome.com/時(shí)的cookie’}# 構(gòu)造一個(gè)全局session對(duì)象S = requests.session()# 使用session對(duì)象即S模擬登錄成功后請(qǐng)求首頁(yè)接口,更新Sh_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).textprint(n_res)# 使用session對(duì)象S請(qǐng)求個(gè)人信息接口s_url = “https://testerhome.com/setting”s_res = S.get(url=s_url).textprint(s_res)

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

      4、完整代碼如下:

      import requestsheaders = { “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)求首頁(yè)接口https://testerhome.com/時(shí)的cookie’}# 構(gòu)造一個(gè)全局session對(duì)象S = requests.session()# 使用session對(duì)象即S模擬登錄成功后請(qǐng)求首頁(yè)接口,更新Sh_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).textprint(n_res)# 使用session對(duì)象S請(qǐng)求個(gè)人信息接口s_url = “https://testerhome.com/setting”s_res = S.get(url=s_url).textprint(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中的。

      最后喜歡的小伙伴的可以點(diǎn)贊收藏加關(guān)注喲,?( ???` )比心。

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
      用戶投稿
      上一篇 2022年6月19日 15:15
      下一篇 2022年6月19日 15:16

      相關(guān)推薦

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息