1. 程式人生 > >python接口自動化測試二:python代碼實現接口測試

python接口自動化測試二:python代碼實現接口測試

服務 獲取 解碼 odi false 壓縮 詳情 異常 將不

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代碼實現接口測試