Request庫介面測試基本用法

2021-10-09 07:51:16 字數 4864 閱讀 1617

requests庫內置了不同的方法來傳送不同型別的http請求,用法如下所示

import requests

base_url=

""#get請求方式

r=requests.get(base_url+

'/get'

)#傳送post型別請求

r=requests.post(base_url+

'/post'

)#傳送put型別請求

r=requests.put(base_url+

'/put'

)#傳送delete型別的請求

r=requests.delete(base_url+

'/delete'

)#響應狀態碼

print

(r.status_code)

#get引數傳遞,query string paramters方法

param_data=

r=requests.get(base_url+

'/get'

,params=param_data)

print

(r.url)

print

(r.status_code)

from_data=

r=requests.post(base_url,

'/post'

,data=from_data)

print

(r.text)

print

(r.status_code)

from_data=

header=

r=requests.post(base_url+

'/post'

,data=from_data,headers=header)

print

(r.headers)

#獲取響應頭資訊

print

(r.text)

#獲取響應內容

print

(r.json())

#將響應內容以json形式列印出來

#cookie設定,新增cookie

cookie=

r=requests.get(base_url+

'/cookies'

,cookies=cookie)

print

(r.text)

r=requests.get(base_url+

'/get'

)print

(r.cookies)

print

(type

(r.cookies)

)#cookies轉化為元組組成的列表

for key,value in r.cookies.items():

print

(key+

':'+value)

python requests庫cookie的設定不同於jmeter和postman,jemter可以新增http cookie管理器給所有該url的請求使用,而postman的cookie設定完之後是全域性的,所有的該url的請求都可以使用。

#乙個請求的超時時間設定,單位s

r=requests.get(base_url+

'/cookies'

,cookies=cookie,timeout=

0.001

)print()

#超時響應異常

from requests import exceptions

try:

response=requests.get(base_url+

'/get'

,timeout=

0.1)

except exceptions.timeout as e:

print

(str

(e))

else

:print

(response.text)

# raise requests.connecttimeout(e,request=requests.get(base_url+'/cookies',cookies=cookie,timeout=0.001))

requests可以使用引數files模擬提交一些檔案資料,假如有的介面需要我們上傳檔案,我們同樣可以利用它來上傳,實現如下

#檔案上傳

file

=r=requests.post(base_url,

+'/post'

,files=

file

)print

(r.text)

session物件儲存特定使用者會話所需要的屬性配置資訊,這樣在應用程式的web頁之間跳轉時,儲存在session物件中的變數將不會丟失,而是在整個使用者會話中一直存在下去。

比如你先進行了登入操作,然後開啟個人中心詳情頁面,個人中心詳情頁面如何知道展示的是剛剛登入的這個使用者的資訊,那麼這裡就需要session來儲存相關的資訊。

在介面測試過程中介面之間經常有依賴關係,比如下面這兩個請求乙個是設定cookie,另外乙個是獲取cookie,在沒有session儲存機制的情況下,第二個介面無法獲取第乙個介面設定的cookie值。

#在沒有session儲存機制的情況下,第二個介面無法獲取第乙個介面設定的cookie值

r=requests.get(base_url+

'/get'

)print

(r.cookies)

r=requests.post(base_url+

'/post'

)print

(r.cookies)

#生成會話物件

s=requests.session(

)#設定cookie

r=s.get(base_url+

'/get'

,cookies=cookie)

print

(r.text)

#獲取cookie

r=s.get(base_url+

'/get'

)print

(r.text)

所以,利用session我們可以做到模擬同乙個會話,而不用擔心cookies的問題,通常用於模擬登入成功後再進行下一步的操作。

#許可權認證

,auth=digest_auth)

requests可以為https請求驗證ssl證書,就像web瀏覽器一樣。ssl驗證預設是開啟的,如果證書驗證失敗,requests會會丟擲sslerror,如果不想驗證ssl證書則可以使用verify引數關閉驗證ssl。

r=requests.get(

'')#關閉驗證ssl

r=requests.get(

'',verify=

false

)print

(r.text)

tips: 12306 的證書是自己頒發給自己的,所以會出現認證失敗。

設定**伺服器

對於有些介面,在測試的時候請求幾次,能正常虎丘內容,但是一旦開始大規模頻繁請求(如效能測試)伺服器可能回來器驗證,甚至直接把ip封掉。那麼為了防止這種情況的發生,我們就需要設定**來解決這個問你,在reuests中需要用到proxies這個引數,在爬蟲中或常用到**

#設定**伺服器

proxie=

r=requests.get(base_url+

'get'

,proxies=proxie)

print

(r.text)

有一些介面的返回值比較特殊,不是單純返回乙個結果,二是多個結果,比如摸個查詢介面,返回值為排行榜前10的商品資訊。

例如:/stream/介面,num表示返回結果集的數量,比如輸入10則會返回10個結果

針對這種型別的接**們對結果集的處理需要使用迭代的方法iter_lines()來處理,具體使用如下:

#流式請求介面

import json

r=requests.get(base_url+

'/stream/10'

,stream=

true

)#如果響應內容沒有設定編碼,設定響應內容編碼為utf-8

if r.encoding is

none

: r.encoding=

'utf-8'

#對相應結果進行迭代處理

for line in r.iter_lines(decode_unicode=

true):

if line:

data=json.loads(line)

print

(data[

'id'

])

Request庫基本使用

基本例項 import requests url response requests.get url print type response print response.status code 狀態碼print type response.text print response.text 開啟網頁...

request庫的基本用法

request urllib 獲取url 獲取狀態碼 request.states code response.getcode 返回html request.text response.read 獲得頭部資訊 request.headers response.info 返回請求的url reques...

request對介面引數進行測試模板

import requests import unittest from time import sleep class weathertest unittest.testcase def setup self pass 正常查詢長沙的天氣,斷言 def test weather changsha ...