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

Python接口自動化之cookie、session應(yīng)用詳解

 更新時間:2021年08月24日 14:09:03   作者:軟件測試自動化測試  
本文主要介紹cookie、session原理及在自動化過程中如何利用cookie、session保持會話狀態(tài)的應(yīng)用,有需要的朋友可以參考下,希望可以有所幫助

在上一篇Python接口自動化測試系列文章:Python接口自動化之淺析requests模塊post請求,介紹了post源碼,data、json參數(shù)應(yīng)用場景及實戰(zhàn)。

以下介紹cookie、session原理及在接口自動化中的應(yīng)用。

HTTP 協(xié)議是一種無狀態(tài)協(xié)議,即每次服務(wù)端接收到客戶端的請求時,都是一個全新的請求,服務(wù)器并不知道客戶端的歷史請求記錄;

Session 和 Cookie 的主要目的就是為了彌補 HTTP 的無狀態(tài)特性。

如果我們測試的接口有依賴關(guān)系怎么辦呢(比如購物支付時,需要先登錄),這時我們就要用到cookie和session技術(shù)來保持客戶端與服務(wù)器端連接的狀態(tài)。

一、cookie

1、cookie介紹

cookie是服務(wù)器發(fā)送到用戶瀏覽器并保存在本地的一小塊數(shù)據(jù),它會在瀏覽器下次向同一服務(wù)器再發(fā)起請求時被攜帶并發(fā)送到服務(wù)器上。通常,它用于告知服務(wù)端兩個請求是否來自同一瀏覽器,如保持用戶的登錄狀態(tài)。

2、cookie原理

① Cookie技術(shù)會根據(jù)從服務(wù)器端發(fā)送的響應(yīng)報文內(nèi)的一個叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie。

② 客戶端再向服務(wù)器端發(fā)送請求的時候,客戶端會在請求報文中加入Cookie值后發(fā)送出去。服務(wù)器端會檢查客戶端發(fā)送的請求中有沒有Cookie值,然后對比服務(wù)器上的記錄,最后確定是哪一個客戶端,之前的信息狀態(tài)是什么。

這樣一來,服務(wù)器就能夠分辨出發(fā)送請求的客戶端究竟是哪一個了。

二、session

1、session介紹

session是一種在服務(wù)端記錄用戶信息的技術(shù),是在無狀態(tài)的HTTP協(xié)議下,服務(wù)端記錄用戶狀態(tài)時用于標(biāo)識具體用戶的機制。它是在服務(wù)端保存的用來跟蹤用戶的狀態(tài)的數(shù)據(jù)結(jié)構(gòu),可以保存在文件、數(shù)據(jù)庫或者集群中。

2、session原理

Session是存放在服務(wù)器端、用來存放用戶數(shù)據(jù)的(類似于HashTable結(jié)構(gòu))。

當(dāng)瀏覽器第一次發(fā)送請求時,服務(wù)器自動生成了一個HashTable和一個Session ID用來唯一標(biāo)識這個HashTable,并將其通過響應(yīng)發(fā)送到瀏覽器。

當(dāng)瀏覽器第二次發(fā)送請求,會將前一次服務(wù)器響應(yīng)中的Session ID放在請求中一并發(fā)送到服務(wù)器上,服務(wù)器從請求中提取出Session ID,并和保存的所有Session ID進行對比,找到這個用戶對應(yīng)的HashTable,以此來達到共享數(shù)據(jù)的目的。

三、cookie和session區(qū)別

1. 存儲位置不同:

Cookie是將用戶數(shù)據(jù)通過加密的方式保存在客戶端,大多數(shù)情況Cookie存儲在瀏覽器;Session是用于控制客戶端和服務(wù)端的連接,Session存儲在服務(wù)器;

2. 存儲容量不同:

單個Cookie保存的數(shù)據(jù)不得超過4kb,一個站點最多20個Cookie,Session一般情況下沒有上限,不過建議不要存放太多東西,否則影響性能;

3. 存取方式不同:

Cookie只能用ASCII字符串,通過編碼方式獲取Unicode字符或者二進制數(shù)據(jù),不好存儲復(fù)雜的信息,而Session能存儲任何類型的數(shù)據(jù);

4. 隱私策略/安全性不同:

Cookie放在客戶端,可以進行Cookie欺騙,所以不安全,Session放在服務(wù)端,更加安全;

5. 有效期不同:

Cookie可以設(shè)置屬性達到長期有效,Session依賴于JSESSIONID的Cookie,Cookie JSESSIONID的過期時間默認(rèn)為-1,只需要關(guān)閉窗口Session就會失效,就算不依賴Cookie,用UrL重寫也不能完成,如果Session超時時間過長,容易導(dǎo)致內(nèi)存溢出;

6. 服務(wù)器壓力不同:

Cookie保存在本地,不存在服務(wù)端壓力,Session保存在服務(wù)端,每個用戶產(chǎn)生一個Session,當(dāng)訪問增多,會比較占用服務(wù)器的性能,如果主要考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用Cookie。

現(xiàn)在有登錄、充值兩個接口,在未登錄時,直接調(diào)用充值接口。

import requests
url = 'http://127.0.0.1:8000/recharge'
payload = {
    "mobilephone":"1530272****",
    "amount":100
}
recharge_res = requests.post(url,data=payload)
print(recharge_res.json())

請求結(jié)果:提示請先登錄。

{'status': 0, 'code': None, 'data': None, 'msg': '抱歉,請先登錄。'}

這時候,今天的主角cookie和session閃亮登場了。

四、cookie應(yīng)用

import requests
 # 登錄接口
url = 'http://127.0.0.1:8000/user/login'
payload = {
    "mobilephone":"1530272****",
    "pwd":"123456"
}
login_res = requests.post(url,data=payload)
print(login_res.json())
# 獲取響應(yīng)結(jié)果的cookies
cookies = login_res.cookies
print(cookies)
 # 充值接口
url = 'http://127.0.0.1:8000/recharge'
payload = {
    "mobilephone":"1530272****",
    "amount":100
}
# 充值接口請求時攜帶cookies
recharge_res = requests.post(url,data=payload,cookies=cookies)
print(recharge_res.json())

五、session應(yīng)用

import requests
 
# 登錄接口
url = 'http://127.0.0.1:8000/user/login'
payload = {
    "mobilephone":"1530272****",
    "pwd":"123456"
}
# 創(chuàng)建session會話管理
session = requests.session()
login_res = session.post(url,data=payload)
print(login_res.json())
 
# 充值接口
url = 'http://127.0.0.1:8000/recharge'
payload = {
    "mobilephone":"1530272****",
    "amount":100
}
recharge_res = session.post(url,data=payload)
print(recharge_res.json())

到此這篇關(guān)于Python接口自動化之cookie、session應(yīng)用詳解的文章就介紹到這了,更多相關(guān)Python接口自動化cookie、session應(yīng)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于CUDA out of memory的解決方案

    關(guān)于CUDA out of memory的解決方案

    這篇文章主要介紹了關(guān)于CUDA out of memory的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 圖文詳解Python中最神秘的一個魔法函數(shù)

    圖文詳解Python中最神秘的一個魔法函數(shù)

    Python進階之路我覺得有兩個東西一定要了解,一個是魔法函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python中最神秘的一個魔法函數(shù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • Pandas分組函數(shù)groupby的用法詳解

    Pandas分組函數(shù)groupby的用法詳解

    在數(shù)據(jù)分析時,經(jīng)常需要將數(shù)據(jù)分成不同的群組,pandas中的groupby()函數(shù)可以完美地完成各種分組操作,本文就來介紹一下Pandas分組函數(shù)groupby的用法,感興趣的可以了解一下
    2024-01-01
  • python3.6的venv模塊使用詳解

    python3.6的venv模塊使用詳解

    這篇文章主要介紹了python3.6的venv模塊使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • python 實現(xiàn)多維數(shù)組(array)排序

    python 實現(xiàn)多維數(shù)組(array)排序

    今天小編就為大家分享一篇python 實現(xiàn)多維數(shù)組(array)排序,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python練習(xí)之操作MySQL數(shù)據(jù)庫

    Python練習(xí)之操作MySQL數(shù)據(jù)庫

    這篇文章主要介紹了Python練習(xí)之操作MySQL數(shù)據(jù)庫,文章通過如何創(chuàng)建MySQL數(shù)據(jù)表?如何向MySQL表中插入數(shù)據(jù)?如何查詢MySQL中的數(shù)據(jù)?的三個問題展開了詳細(xì)的內(nèi)容介紹
    2022-06-06
  • Python實現(xiàn)的計算器功能示例

    Python實現(xiàn)的計算器功能示例

    這篇文章主要介紹了Python實現(xiàn)的計算器功能,涉及Python四則運算、取反、百分比等相關(guān)數(shù)學(xué)運算操作實現(xiàn)技巧,需要的朋友可以參考下
    2018-04-04
  • 詳解python變量與數(shù)據(jù)類型

    詳解python變量與數(shù)據(jù)類型

    這篇文章主要介紹了python變量與數(shù)據(jù)類型的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • Python爬蟲模擬登錄帶驗證碼網(wǎng)站

    Python爬蟲模擬登錄帶驗證碼網(wǎng)站

    這篇文章主要介紹了Python爬蟲模擬登錄帶驗證碼網(wǎng)站的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • Python并發(fā):多線程與多進程的詳解

    Python并發(fā):多線程與多進程的詳解

    今天小編就為大家分享一篇關(guān)于Python并發(fā):多線程與多進程的詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評論