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

python+pytest接口自動化之session會話保持的實現(xiàn)

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

前言

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

一、session(會話)

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

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

會話中:客戶端接著請求該應用服務器的其他資源;

結(jié)束:關閉客戶端(通常是瀏覽器)或者會話超時,會話結(jié)束。

二、會話保持

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

session會話保持大致原理如下:

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

三、python進行session會話保持

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

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

注意:

  • 這里我先嘗試請求登錄接口構造session,然后再利用該session去請求其他接口,仍然提示需先登錄,說明該網(wǎng)站此種方式行不通。
  • 因為登陸后跳轉(zhuǎn)到了首頁,所以這里我們可以利用請求首頁接口構造session,然后就可以利用該session去請求其他接口了。

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

 2、拿到cookie,利用請求首頁接口構造session對象。

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)時,請求首頁接口https://testerhome.com/時的cookie'
}
 
# 構造一個全局session對象
S = requests.session()
 
# 使用session對象即S模擬登錄成功后請求首頁接口,更新S
h_url = "https://testerhome.com/"
h_res = S.get(url=h_url, headers=headers).text

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

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

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

請求個人信息接口,執(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)時,請求首頁接口https://testerhome.com/時的cookie'
}
 
# 構造一個全局session對象
S = requests.session()
 
# 使用session對象即S模擬登錄成功后請求首頁接口,更新S
h_url = "https://testerhome.com/"
h_res = S.get(url=h_url, headers=headers).text
 
# 使用session對象S請求個人通知消息接口
n_url = "https://testerhome.com/notifications/personal"
n_res = S.get(url=n_url).text
print(n_res)
 
# 使用session對象S請求個人信息接口
s_url = "https://testerhome.com/setting"
s_res = S.get(url=s_url).text
print(s_res)

總結(jié)

session與cookie是不同的機制。

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

不同點:cookie是存儲在本地客戶端的,而session則存儲在服務端。

兩者之間存在聯(lián)系:session會話保持機制需要依賴cookie,因為session ID是存儲在cookie中的。

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

相關文章

  • Ruby元編程基礎學習筆記整理

    Ruby元編程基礎學習筆記整理

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

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

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

    利用Python編寫簡易的錄制屏幕小工具

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

    Python實現(xiàn)分數(shù)序列求和

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

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

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

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

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

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

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

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

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

    Python爬蟲簡單運用爬取代理IP的實現(xiàn)

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

    python 不關閉控制臺的實現(xiàn)方法

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

最新評論

凤山县| 古丈县| 清水县| 宁强县| 巧家县| 淳化县| 博白县| 金华市| 吴忠市| 修武县| 云南省| 都安| 乐陵市| 和政县| 昌黎县| 衡南县| 关岭| 泽库县| 田东县| 亳州市| 沂源县| 赣榆县| 新巴尔虎左旗| 黔江区| 广宁县| 通榆县| 若羌县| 汉中市| 丽水市| 丹东市| 靖西县| 温泉县| 洞口县| 乌鲁木齐市| 昭苏县| 普陀区| 盐源县| 通化市| 武隆县| 黔南| 翁源县|