python接口自動化測試二:python代碼實現接口測試
url = ‘接口地址‘
r = requests.get(url) #發送get請求
print(r.status_code) #打印狀態碼,若有重定向,返回的是重定向之後的代碼
print(r.headers) #打印返回的報頭(頭部)
print(r.text) #查看返回結果的文本形式
r.status_code #響應狀態碼
r.content #字節方式的響應體,會自動為你解碼 gzip 和 deflate 壓縮
r.headers #以字典對象存儲服務器響應頭,但是這個字典比較特殊,字典鍵不區分大小寫,若鍵不存在則返回None
r.json() #Requests中內置的JSON解碼器 ,json轉成python的字典了
r.url # 如果沒有重定向,就是請求的url,如果有重定向,就是重定向後的url
r.encoding # 查看返回的編碼格式
r.cookies # 獲取cookie
r.raw #返回原始響應體
r.history #追蹤重定向過程(list類型)
r.text #字符串方式的響應體,會自動根據響應頭部的字符編碼進行解碼
r.content.decode(‘utf-8‘) # 返回內容有亂碼時,用此方法打印
r.raise_for_status() #失敗請求(非200響應)拋出異常
loginCookies = r.cookies: # 獲取登錄的cookies
cookies=loginCookies: # 把獲取到的cookies傳入請求
s = requests.session() # 可以理解為代碼的微型瀏覽器,這樣做的好處就是可以保存cookies,不用每次都去獲取(只適用於網站是cookies這種,網站是token的沒用)
print(r.encoding) # 查看返回的編碼格式
r.json # 獲取返回的json
verify=False # 訪問https請求時加上後不驗證證書
# open打開excel文件,保存為後綴為xls的文件
fp = open(‘yoyo.xls‘, ‘wb‘) # w:寫入, b:二進制的形式
去掉Warning警告:
import urllib3
urllib3.disable_warnings()
一、HTTP:
get請求:
1、get請求(無參數):
2、get請求(帶參數):
接口地址:http://japi.juhe.cn/qqevaluate/qq
返回格式:json
請求方式:get post
請求示例:http://japi.juhe.cn/qqevaluate/qq?key=您申請的appKey&qq=295424589
接口備註:根據傳入的參數 qq 號碼和您申請的 appKey 測試 qq 的吉兇
請求參數說明(入參) :
名稱 必填 類型 說明
key 是 string 您申請的 appKey:8dbee1fcd8627fb6699bce7b986adc45
qq 是 string 需要測試的 QQ 號碼:907728701
2.1、以url的方式傳參:
url = ‘http://japi.juhe.cn/qqevaluate/qq?key= 8dbee1fcd8627fb6699bce7b986adc45&qq=907728701‘
2.2、以字典的形式傳參:
url = ‘http://japi.juhe.cn/qqevaluate/qq‘
par = {
‘key‘:‘ 8dbee1fcd8627fb6699bce7b986adc45‘,
‘qq‘:‘907728701‘
}
r = requests.get(url,params=par) #發送get請求
Post請求:
1、 post請求(無參數):
url = ‘http://japi.juhe.cn/qqevaluate/qq‘
r = requests.post(url) #發送post請求
print(r.status_code) #打印狀態碼
print(r.headers) #打印返回的報頭(頭部)
print(r.text) #查看返回結果的文本形式(body部分)
2、 post請求(有參數):
2.1、以url的方式傳參:
url = ‘http://japi.juhe.cn/qqevaluate/qq?key= 8dbee1fcd8627fb6699bce7b986adc45&qq=907728701‘
r = requests.post(url) #發送post請求
2.2、以字典的形式傳參:
url = ‘http://japi.juhe.cn/qqevaluate/qq‘
par = {
‘key‘:‘8dbee1fcd8627fb6699bce7b986adc45‘,
‘qq‘:‘907728701‘
}
r = requests.post(url,params=par) #發送get請求
二、HTTPS:
1、get:
url = ‘https://www.juhe.cn/docs/api/id/39‘
r = requests.get(url) #發送get請求
print(r.status_code) #打印狀態碼
print(r.headers) #打印返回的報頭(頭部)
print(r.text) #查看返回結果的文本形式(body部分)
SSLError:證書問題:
方法1.檢查faddler是否關閉,關閉後,訪問成功:
方法2.請求參數後加上:verify=False
verify默認為True,此時會驗證證書,改為False將不會驗證證書
有Body部分:
Content-Type: application/x-www-form-urlencoded; charset=UTF-8:傳data
Content-Type: application/json:傳json
把返回的內容解析為json格式:
前提:一定內容為json格式
若亂碼::
以content字節流輸出,解碼成utf-8:
print(r.encoding) # 查看返回的編碼格式:
去掉Warning警告:
import urllib3
urllib3.disable_warnings()
錯誤處理:
403:拒絕或者禁止訪問:須偽裝頭部(頭部詳情根據接口文檔)
1、服務器識別出為代碼訪問:
1.1.代碼訪問的頭部:User-Agent為python
1.2.瀏覽器訪問的頭部:User-Agent為瀏覽器
1.3.在頭部加上User-Agent:
2、偽裝頭部後仍然403:服務器校驗Cookic (Cookic有時效性)
2.1.代碼訪問時沒有加Cookic
2.2.瀏覽器訪問時有Cookic
2.3.在頭部加上Cookic訪問成功
python接口自動化測試二:python代碼實現接口測試