欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)文章

  • Python下線程之間的共享和釋放示例

    Python下線程之間的共享和釋放示例

    這篇文章主要用示例簡(jiǎn)單介紹了Python下線程之間的共享和釋放,線程一直是Python開發(fā)者中的熱點(diǎn)問題,需要的朋友可以參考下
    2015-05-05
  • Python通過遞歸遍歷出集合中所有元素的方法

    Python通過遞歸遍歷出集合中所有元素的方法

    這篇文章主要介紹了Python通過遞歸遍歷出集合中所有元素的方法,實(shí)例分析了Python遍歷集合元素的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • Python中裝飾器的一個(gè)妙用

    Python中裝飾器的一個(gè)妙用

    這篇文章主要介紹了Python中裝飾器的一個(gè)妙用,本文是在寫一個(gè)爬蟲程序時(shí)總結(jié)而來,實(shí)現(xiàn)定義一個(gè)裝飾器,如果之前取到數(shù)據(jù),就直接取cache的數(shù)據(jù),如果之前沒有取到,那么就從網(wǎng)站拉取,并且存入cache中,需要的朋友可以參考下
    2015-02-02
  • 基于Python實(shí)現(xiàn)流星雨效果的繪制

    基于Python實(shí)現(xiàn)流星雨效果的繪制

    這篇文章主要為大家介紹了如何利用Python繪制一個(gè)浪漫的流星雨效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手試一試
    2022-03-03
  • pandas歸一化與反歸一化操作實(shí)現(xiàn)

    pandas歸一化與反歸一化操作實(shí)現(xiàn)

    本文主要介紹了pandas歸一化與反歸一化操作實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Python元組的定義及使用

    Python元組的定義及使用

    這篇文章主要介紹了Python元組的定義及使用,在Python中元組是一個(gè)和列表非常類似的數(shù)據(jù)類型,不同之處就是列表中的元素可以修改,而元組之中的元素不可以修改。想具體了解的下小伙伴請(qǐng)參考下面文章的具體內(nèi)容,希望對(duì)你有所幫助
    2021-11-11
  • python Xpath語法的使用

    python Xpath語法的使用

    這篇文章主要介紹了python Xpath語法的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 自制Python淘寶秒殺搶購腳本雙十一百分百中

    自制Python淘寶秒殺搶購腳本雙十一百分百中

    年年雙十一,年年搶不到,今年小編自制Python淘寶秒殺搶購腳本,百分百中,下面小編把我的實(shí)現(xiàn)思路分享給大家,有興趣的朋友借鑒下吧
    2021-11-11
  • python實(shí)現(xiàn)H2O中的隨機(jī)森林算法介紹及其項(xiàng)目實(shí)戰(zhàn)

    python實(shí)現(xiàn)H2O中的隨機(jī)森林算法介紹及其項(xiàng)目實(shí)戰(zhàn)

    這篇文章主要介紹了python實(shí)現(xiàn)H2O中的隨機(jī)森林算法介紹及其項(xiàng)目實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Django模板變量如何傳遞給外部js調(diào)用的方法小結(jié)

    Django模板變量如何傳遞給外部js調(diào)用的方法小結(jié)

    這篇文章主要給大家介紹了關(guān)于Django模板變量如何傳遞給外部js調(diào)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07

最新評(píng)論