Python 之requests封裝通用http協議介面請求
思想這東西任何時候也不會是固定的,縱使框架大致一樣,也不盡相同。關鍵還得是看業務和具體需求。python介面自動化測試框架,軟體:IDE開發工具必選+工具類如下:
1、主要框架有:requests庫、unittest單元測試框架、HTMLrunner生成測試報告工具類、DDT資料驅動;另外pymysql、configparser、email、openpyxl等等其他工具類
2、一般思想,即一步一個腳印:
- 首先指令碼化處理http請求--requests
- 將同型別測試指令碼封裝,每個介面封裝成一個介面類
- 利用單元測試工具unittest,建立測試集suite,loader載入測試用例,測試方法命名必須test開頭
- 最後html生成測試報告,是否需要傳送郵件等在另行擴充套件
3、根據上面的步驟分析,基本確定介面測試結構框架
4、直接上原始碼 ,應該可能還有最佳化的空間,希望讀者能夠給點提示,共同進步~
'''
Created on 2019年10月10日
@author: qguan
'''
import requests
from utils.HandleLogging import log as logging
class HandleRequests(object):
'''
封裝一個公共http請求工具類
'''
def __init__(self):
'''
構造方法
'''
self.logger = logging
self.session = requests.Session()
def __call__(self, method, url, data=None, is_json=False, **kwargs):
'''
封裝一個可以被直接呼叫的方法
:param method: 請求方法
:param url: 請求地址
:param data: 請求引數
:param is_json: 是否json格式
:param kwargs: 佔位,可自定義headers
:return: 返回一個請求結果
''' 鄭州人流醫院哪家好
# 請求方法的引數轉成小寫,也可以是大寫upper()
method = method.lower()
# 判斷請求引數是否是str型別的json格式
if isinstance(data, str):
try:
data = json.loads(data)
except Exception as e:
self.logger.info("str字串json資料處理異常:{}".format(e))
if len(data) > 0:
data = eval(data)
# 請求方法
if method == 'get':
res = self.session.request(method=method, url=url, params=data, **kwargs)
elif method == 'post':
if is_json: # 如果是json格式的請求引數,是用json
res = self.session.request(method=method, url=url, json=data, **kwargs)
else:
res = self.session.request(method=method, url=url, data=data, **kwargs)
else:
self.logger.info("[{}]該請求方法暫不支援。".format(method))
# session需要關閉資源
self.session.close()
return res.text
if __name__ == '__main__':
res=HandleRequests()
url='
print(res("get", url))
5、以上講了介面自動化測試框架的結構分層及封裝了requests作為http請求工具類
6、unittest單元測試框架還需要單獨的來講其使用方法,如:建立測試套件、載入測試用例、執行測試、結果回寫、生成報告、傳送郵件通知等等框架說具備的功能。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2667027/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python-對requests請求簡單的封裝Python封裝
- 基於FutureBuilder通用網路請求介面封裝Rebuild封裝
- 【python介面自動化】- 使用requests庫傳送http請求PythonHTTP
- HTTP協議如何發起請求HTTP協議
- HTTP 協議六種請求方法HTTP協議
- react中請求介面的封裝React封裝
- 協議層的攻擊:HTTP請求走私協議HTTP
- CTFHub web前置技能HTTP協議請求方式WebHTTP協議
- [譯]axios 是如何封裝 HTTP 請求的iOS封裝HTTP
- HTTP協議的請求與資料抓包HTTP協議
- 解密協議層的攻擊——HTTP請求走私解密協議HTTP
- 使用requests庫來傳送HTTP請求HTTP
- python requests get請求 如何獲取所有請求Python
- Http協議什麼時候發生options請求?HTTP協議
- 封裝axios請求封裝iOS
- vue介面請求方式axios二次封裝VueiOS封裝
- python+pytest介面自動化(4)-requests傳送get請求Python
- python做http請求PythonHTTP
- 基於小程式請求介面 wx.request 封裝的類 axios 請求封裝iOS
- python3+requests:使用類封裝介面測試指令碼Python封裝指令碼
- 使⽤用Requests庫構建⼀一個HTTP請求HTTP
- 封裝ajax、axios請求封裝iOS
- HTTP協議請求工作流程是什麼?linux學習HTTP協議Linux
- php用curl封裝一個http請求類(鏈式呼叫)PHP封裝HTTP
- 02 前端HTTP協議(圖解HTTP) 之 簡單的HTTP協議前端HTTP協議圖解
- 前端必知必會HTTP請求系列(二)簡單一點的HTTP協議前端HTTP協議
- HTTP協議之:HTTP/1.1和HTTP/2HTTP協議
- Python 使用socket模擬http請求,從阻塞到協程PythonHTTP
- axios 請求資料封裝iOS封裝
- OC:封裝網路請求封裝
- http協議請求方法有哪些?網路安全技術入門HTTP協議
- 封裝 PHP curl http 請求 (全) Composer 安裝 httpbuilder,支援 GET,POST,PUT,DELETE封裝PHPHTTPUIdelete
- python-http請求帶AuthorizationPythonHTTP
- python傳送HTTP POST請求PythonHTTP
- python+pytest介面自動化(2)-HTTP協議基礎PythonHTTP協議
- SQL Server儲存過程模擬HTTP請求POST和GET協議SQLServer儲存過程HTTP協議
- 基於 Fetch 的請求封裝封裝
- 釘釘小程式 請求封裝封裝