筆記整理 python開發介面測試requests

2021-08-27 10:57:43 字數 2478 閱讀 6128

python開發介面測試

作用python語言實現web api介面測試, 常用下面的庫

內建庫: httplib, urllib2

第三方庫: requests

python requests庫

特點: 1. 簡便易用, 功能強大,姐姐我喜歡用這個。

請求引數:

requests.get(url, params=xx, headers=xx)

params =這個引數放在url裡

定製請求頭: 

headers=這個引數放在訊息頭里, headers接收的是乙個字典

傳遞url引數:

為url的查詢字串(query string)傳遞某種資料。資料以鍵值對的形式置於url中, 跟在乙個問題後面。 用params關鍵字引數, 以乙個字典來提供這些引數。 

payload =

r = requests.get("", params=payload)

則url是 ?key2=value2&key1=value1

注意字典裡值為 none 的鍵都不會被新增到 url 的查詢字串裡。

還可以將列表做為值傳入。

payload =

r = requests.get('', params=payload)

則url是?key1=value1&key2=value2&key2=value3

訊息體中傳送一些編碼為表單形式的資料

傳遞乙個字典給data引數,字典在發出請求時會自動編碼為表單形式。  

也可以為data引數傳入乙個元組。 在表單中多個元素使用同乙個key的時候,這種方式尤其有效。

payload = (('key1', 'value1'), ('key1', 'value2')) r = requests.post('', data=payload) print(r.text) , ... }

如果傳遞的是乙個string而不是dict, 那麼資料就會被直接發出去。

>>> import json

>>> url = ''

>>> payload =

>>> r = requests.post(url, data=json.dumps(payload))

還可以用json引數直接傳遞, 它會被自動編碼。

>>> url = '' >>> payload = >>> r = requests.post(url, json=payload)

如用format, 則用兩個'%(name,desc,display_idx)

方法2:'data':f'''"

"desc":"",

"display_idx":"

方法3: # 'data':'''"

# "desc":"{}",

# "display_idx":"{}

# }}'''.format(name,desc,display_idx)

rsp = requests.post(baseurl,data=data)

body:

x-www-form-urlencode方式,即表單方以式, 用這個訊息頭會自動加上content-type: x-www-form-urlencode方式,引數放在data裡

xml格式: 也是傳到data裡

引數是字典,用data,會自動採用content-type:x-www-form-urlencode方式, 如果是普通字串, heade頭里不會加上content-type, 此時,就直接在heads裡直接加上content-type。

響應:r = requests.post(...) 返回的r是乙個響應對應

r.text 訊息體內容, 這個返回的是乙個字串

r.status_code 響應狀態碼

request還附帶了乙個內建的狀態碼查詢物件 r.status_code == requests.codes.ok 返回true或false

如果傳送了乙個錯誤請求(4xx,5xx),可以通過rsp.raise_for_status()來丟擲異常。如果是200, 返回none

r.headers() 返回響應頭,返回的是乙個字典,這個字典比較特殊,響應頭字段是大小寫不敏感的。 r.headers['content-type'],r.headers['content-type']兩者是一樣的。

assert '"retcode":0' in r.text ---一種斷言。  這種方法不太好,要寫得非常小心。 

retobj = r.json() #將響應的字串轉化為對應的python物件。

比如轉化為字典或是列表。

cookies

訪問cookie: r.cookies['cookie_name']

要想傳送你的cookies到伺服器,可以使用 cookies 引數:

>>> url = '' >>> cookies = dict(cookies_are='working') >>> r = requests.get(url, cookies=cookies) >>> r.text

python實現webserver介面測試

python2 中需要安裝 suds,而且先需要安裝client,不然會報錯 python3 中需要安裝 suds py3,pip install suds py3 匯入client from suds.client import client url需要以 wsdl 不區分大小寫 前面是具體的介面...

Java筆記整理 介面

抽象類是介於普通類和介面之間的形式 包含抽象方法的類叫做抽象類。如果乙個類包含乙個或多個抽象方法,該類必須限定為抽象的 為抽象類建立物件是不安全的,會產生錯誤 匯出類必須實現基類的抽象方法,否則該匯出類也是抽象類 必須用abstract關鍵字來限定抽象類和抽象方法 抽象類可以沒有任何抽象方法 int...

python 介面開發

一 flask flask需要先安裝再引用。pip install flask 用flask開發介面的流程為 1 定義乙個server server flask.flask name name 代表當前的python檔案。把當前的python檔案當做乙個服務啟動 2 然後定義介面函式,一般函式和介面...