Python 接口測試之接口請求方法封裝

  引言

  前面講過三篇文章:html

一、Python 接口測試之Excel表格數據操做方法封裝 ;json

二、Python 接口測試之接口關鍵字封裝  ;框架

三、Python 接口測試之獲取接口數據封裝  ;post

  既然咱們接口測試用例寫好了,測試數據也拿到了,那麼就是模擬調用接口的方法了,方法有get,post,put,delete,具體是選擇哪一種,咱們須要根據不一樣接口規定好請求方法來調用。爲了方便,將四種方法封裝到一個類中,每次只需訪問類中某個方法,到達請求的目的。學習

  請求方法封裝

  下面就直接附上代碼:測試

__author__ = 'Leo'

import requests
import json

class ApiRequest(object):
    """
    請求方法
    """
    # 請求方法get
    def get_method(self,url,data=None,header=None):

        if header is not None:
            res = requests.get(url,params=data,headers=header)
        else:
            res = requests.get(url,params=data)
        return res.json()

    # 請求方法post
    def post_method(self,url,data=None,header=None):
        global res
        if header is not None:
            res = requests.post(url,json=data,headers=header)
        else:
            res = requests.post(url,json=data)
        if  str(res) == "<Response [200]>":
            return res.json()
        else:
            return res.text

    # 請求方法put
    def put_method(self,url,data=None,header=None):
        if header is not None:
            res = requests.put(url,json=data,headers=header)
        else:
            res = requests.delete(url, json=data)
        return res.json()

    # 請求方法delete
    def delete_method(self, url, data=None, header=None):
        if header is not None:
            res = requests.delete(url, json=data, headers=header)
        else:
            res = requests.delete(url, json=data)
        return res.json()

    # 主方法
    def run_method(self,method,url,data=None,header=None):
        if method == 'get' or method == 'GET':
            res = self.get_method(url,data,header)
        elif method == 'post' or method =='POST':
            res = self.post_method(url,data,header)
        elif method == 'put' or method == 'PUT':
            res = self.post_method(url,data,header)
        elif method == 'delete' or method == 'DELETE':
            res = self.post_method(url,data,header)
        else:
            res = "你的請求方式不正確!"
        # return res
        return json.dumps(res, ensure_ascii=False, indent=4, sort_keys=True,separators=(',', ':'))

  

簡單的解釋一下相關知識點:編碼

ensure_ascii:默認值True,若是dict內含有non-ASCII的字符,則會相似\uXXXX的顯示數據,設置成False後,就能正常顯示。

indent:應該是一個非負的整型,若是是0,或者爲空,則一行顯示數據,不然會換行且按照indent的數量顯示前面的空白,這樣打印出來的json數據也叫pretty-printed json。

separators:分隔符,其實是(item_separator, dict_separator)的一個元組,默認的就是(‘,’,’:’);這表示dictionary內keys之間用「,」隔開,而KEY和value之間用「:」隔開。

encoding:默認是UTF-8,設置json數據的編碼方式。

sort_keys:將數據根據keys的值進行排序。

 

  執行測試

  方法已經封裝好,既然接口數據有了,請求方法也有了,咱們不妨測試一下以前封裝好的代碼,用實際行動來檢驗一下:url

# get請求
if __name__ == '__main__':
    url = "http://httpbin.org/get"
    ir = ApiRequest()
    result = ir.run_method(url=url,method='get')
    print(result)

  運行結果:spa

 

 

# post請求
url2 = "http://httpbin.org/post"
ir2 = ApiRequest()
data = {'id': '測試'}
result = ir2.run_method(url=url2,method='post',data=data)
print(result)

運行結果:excel

 

 

  有些細心人可能有疑問,這裏沒有使用excel中的接口測試數據,下面我就演示一下,調用excel中維護的接口測試數據,先維護數據:

 

  from basic_method import get_excelData
    get_data = get_excelData.getData()
    print("獲取是否運行key: ",get_data.get_is_run(1))
    print("獲取接口url: ",get_data.get_url(1))
    print("獲取接口請求方法: ",get_data.get_method(1))
    print("獲取接口請求數據: ",get_data.get_data(1))
    url2 = get_data.get_url(1)
    method = get_data.get_method(1)
    data = get_data.get_data(1)
    ir2 = ApiRequest()
    result = ir2.run_method(url=url2,method=method,data=data)
    print(result)

  

運行結果:

 

 

  此次就是調用過程是從excel拿的數據,而且經過封裝好的方法請求模擬請求接口。證實此前封裝好的代碼是能夠正常運行。

這裏獻上另外一種請求方法:

 

 

  總結

  上面對接口請求方法封裝已經完成了,而且將以前寫的封裝代碼一塊兒使用,實現了自動化測試框架中核心的代碼,對自動化測試,測試開發感興趣的朋友,同窗能夠加入QQ測試開發交流羣:696400122。相互學習,共同進步!

相關文章
相關標籤/搜索