最近有研究接口測試,然后查了查資料,發現有兩種方法,一種是使用urllib庫,一種是使用requests庫。而在這里,我使用的是requests庫,為什么要用這個呢?
從官方文檔看出,python的標准庫urllib2提供了大部分需要的HTTP功能,但是呢?API太坑,使用標准庫實現會寫大堆代碼。而requests使用起來的話,就比較簡潔。(建議使用的開發工具是 pycharm,安裝插件方便。)
下面別的不說,先上一個簡單示例:
# -*- coding:utf-8 -*- __author__ = u'harry'
import requests #先導入包,這是必須的 url = 'http://XXXXXXXXXXXXXXX' #url:接口地址 data = {'XXXX':'XXX'} #data:接口傳遞的參數 headers = {'Connection':'close'} #header:傳遞header信息 #files:接口中需要上傳文件則需要用到該參數 r = requests.post(url,data = data,headers = headers) #請求url,獲得返回的數據信息 print(r.text.encode('utf-8')) #獲得的返回數據使用text方法進行獲取
使用requets就是這么簡單。
簡單的使用方法寫了,各位客官可以對其進行很多的修改。比如說:封裝這塊代碼,每次可以進行調用;可以添加循環,變為自動化,從excel中讀取數據,然后進行循環取值。 等等等等。。。。
在最后再加上一個我封裝后的urllib庫 與 requests庫的對比代碼:
# -*- coding:utf-8 -*- __author__ = u'harry' import urllib.request import requests #先導入包,這是必須的 import urllib.parse url = 'XXXXXXX' # url:接口地址 data = {'XXX': 'XXX'} #data:接口傳遞的參數 headers = {'Connection': 'close'} # header:傳遞header信息 # files:接口中需要上傳文件則需要用到該參數 def requests_test(url,data,headers): response = requests.post(url,data = data,headers = headers) #請求url,獲得返回的數據信息 print(response.text,response.headers) #返回頭部信息 def urllib_test(url,data): data1 = urllib.parse.urlencode(data).encode('utf-8') response = urllib.request.Request(url=url,data = data1) html = urllib.request.urlopen(response) print(html.read()) print(html.getcode(),html.msg) #獲得html返回的狀態 print(html.headers) #返回頭部信息 #下面調用兩個方法: urllib_test(url,data) requests_test(url,data,headers)
關於這兩個庫的get請求,我就不多講了。
requests: requests.get("url")
urllib:不傳入data就可以了。
如果要解決接口返回值的unicode編碼,則
html.read().decode('unicode-escape')