自動化測試要知足四個條件:python
1 - 自動化用例可以完成全部測試步驟 -------- postman不支持 沒有完整的用例管理系統git
2 - 每一個用例的輸入數據,必需要自動填入 -------- postman支持github
3 - 每一個用例的結果檢查,必須能夠用代碼自動完成 ------ postman支持web
4 - 具有環境初始化和清除功能 ------ postman不支持 postman受到沙盒限制並不能任意引用第三方庫json
python語言也能夠實現web api接口測試。主要是構造出相應的http請求。api
* 內置庫有 httplib urllib2服務器
* 第三方庫 urllib3 requests pyCurlapp
所以,要想進行接口自動化,咱們就來了解下Request庫。post
-----------------------------------------------------------------------------------------------------------------------------------------------------------------測試
Requests庫:第三方庫,簡單易用、功能強大,是python實現的最簡單易用的HTTP庫。
須要手動安裝: pip install requests 提示successful即安裝成功,模塊requests就能夠使用了 import requests
構建各類http請求:
requests.get('htpps://api.github.com/events') --------- http.get請求
requests.post('http://httpbin.org/post', data={'key':'value'}) ----------- http.post請求
requests.put('http://httpbin.org/put', data={'key':'value'}) ------------ http.put請求
requests.delete('http://httpbin.org/delete') ------------ http.delete請求
構建URL參數:
payload = {'key1':'value1', 'key2':'value2'}
requests.get('http://httpbin.org/get', params=payload)
構建請求頭:
只須要簡單的傳遞一個字典給headers參數就能夠了,如:
h = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36....'}
requests.get(url, headers=h, params=payload)
定製請求體:
① 請求體類型 Content-Type: application/x-www-form-urlencoded
只須要簡單的穿衣一個字典給data參數就能夠了,如:
payload1 = {‘action’: 'add_course',
'data':'''{
'name':'數學',
'desc':'數學課程',
'display_idx': '4'
}'''
}
resp = request.post(url, data=payload1)
② 請求體類型 Content-Type: application/json
能夠將字典直接傳遞給json參數 如:
payload2 = {‘action’: 'add_course', 'data':{ 'name':'數學', 'desc':'數學課程', 'display_idx': '4'}}
resp = requests.post(url, json=payload2)
查看響應內容:
先獲取到響應對象resp = requests.post(url, data=payload) 就能夠查看服務器返回的各類消息內容
查看響應頭 ----- resp.headers
查看響應體 ----- resp.text
若是響應體恰巧是json格式 resp.json() 自動把json格式的字符串轉成python對象,一般都是字典類型。
那麼再獲取字典裏面具體的值就好操做了。如:
retObj = resp.json()
if retObj['retcode'] == 0:
print('pass')
else:
print(retObj['retcode'])