“接口自動化測試是指通過編寫代碼或使用工具,模擬用戶發(fā)送請求,驗證接口是否符合設計規(guī)范和功能需求的過程。”
如何用 python +ddt+excel 實現(xiàn)接口自動化測試
接口自動化測試可以提高測試效率和質量,節(jié)省測試成本和時間,保證測試覆蓋率和可維護性。
讓勇哥帶你入門如何用 python +ddt+excel 實現(xiàn)接口自動化測試,請瞧如下內容:
(資料圖片)
一、準備工作
1. 安裝 python 環(huán)境
python 是一種簡潔、優(yōu)雅、易學的編程語言,它有豐富的第三方庫和社區(qū)支持,非常適合用來進行接口自動化測試。安裝 python 的3.0以上的版本),并配置好環(huán)境變量,以便在命令行中使用 python 命令。
2. 安裝相關庫
為了進行接口自動化測試,我們需要安裝以下幾個庫:
requests:用來發(fā)送 HTTP 請求,支持各種方法、參數、頭部、身份驗證等。
xlrd:用來讀取 excel 文件中的數據,支持 xls 和 xlsx 格式。
openpyxl:用來寫入 excel 文件中的數據,支持 xlsx 格式。
ddt:用來實現(xiàn)數據驅動測試,可以從 excel 文件中讀取多組數據,并生成多個測試用例。
unittest:用來編寫和執(zhí)行測試用例,支持斷言、前置后置條件、測試套件等。
HTMLTestRunner_api:用來生成 HTML 格式的測試報告,支持圖表、日志、截圖等。
我們可以使用 pip 命令來安裝這些庫,例如:
pip install requests
二、設計測試
1. 編寫 excel 文件
我們需要在 excel 文件中填寫接口的相關信息,包括:
接口名稱
請求地址
請求方法
請求參數
預期結果
例如:
我們可以將這個 excel 文件保存為 test_data.xlsx,并放在項目的 test_datas 目錄下。
2. 封裝 excel 操作
為了方便地讀取和寫入 excel 文件中的數據,我們需要封裝一些 excel 操作的函數,例如:
打開表單
獲取表頭
獲取所有數據
寫入數據
我們可以將這些函數定義在一個類中,并保存為 excel_handler.py,并放在項目的 Lib 目錄下。具體代碼如下:
from openpyxl import load_workbookfrom openpyxl.worksheet.worksheet import Worksheetclass ExcelHandler(): """操作Excel""" def __init__(self, file): """初始化函數""" self.file = file def open_sheet(self, sheet_name) -> Worksheet: """打開表單""" wb = load_workbook(self.file) sheet = wb[sheet_name] return sheet def read_rows(self,sheet_name): """讀取除表頭外所有數據(除第一行外的所有數據)""" sheet = self.open_sheet(sheet_name) rows = list(sheet.rows)[1:] data = [] for row in rows: row_data = [] for cell in row: row_data.append(cell.value) data.append(row_data) return data def read_key_value(self,sheet_name): """獲取所有數據,將表頭與內容結合整...."""... return data
3. 封裝 requests 請求
為了方便地發(fā)送 HTTP 請求,我們需要封裝一些 requests 請求的函數,例如:
初始化 session
發(fā)送請求
關閉 session
我們可以將這些函數定義在一個類中,并保存為 requests_handler.py,并放在項目的 Lib 目錄下。具體代碼如下:
import requestsclass HTTPHandler: # 初始化 def __init__(self): self.session = requests.Session() # 定義一個方法,接收訪問http請求的方式 def visit(self, url, method, params=None, data=None, json=None, **kwargs): res = self.session.request(method, url, params=params, data=data, json=json, **kwargs) try: return res.json() except ValueError: print("return not json") # 關閉session會話 def close_session(self): self.session.close()
三、執(zhí)行測試
1. 編寫測試用例
我們需要使用 unittest 和 ddt 來編寫和執(zhí)行測試用例,具體步驟如下:
導入相關庫和模塊
定義一個測試類,繼承 unittest.TestCase
定義一個類方法,用來初始化 session 和讀取 excel 文件中的數據
使用 @ddt.data 裝飾器,傳入 excel 文件中的數據
定義一個測試方法,用來發(fā)送請求,并斷言響應結果是否符合預期
我們可以將這些代碼保存為 test_api.py,并放在項目的 test_cases 目錄下。具體代碼如下:
from Lib.excel_handler import ExcelHandlerfrom Lib.requests_handler import HTTPHandlerimport requestsimport ddtimport unittestdata = ExcelHandler("test_datas/test_data.xlsx").read_key_value("Sheet1")@ddt.ddtclass TestAPI(unittest.TestCase): @classmethod def setUpClass(cls): cls.s = HTTPHandler() @ddt.data(*data) def test_api(self,params): print("params:%s" % params) case_name = params.get("接口名稱") url = params.get("請求地址") args = eval(params.get("請求參數")) if isinstance(params.get("請求參數"), str) else params.get("請求參數") method = params.get("請求方法") expct_res1 = params.get("預期結果") # 發(fā)起請求,獲取返回數據 result = self.s.visit(url, method, params=args) # 分析返回數據 response_data = result["name"] # 斷言響應結果是否符合預期 self.assertEqual(expct_res1, response_data) @classmethod def tearDownClass(cls): cls.s.close_session()
2. 生成測試報告
我們需要使用 HTMLTestRunner_api 來生成 HTML 格式的測試報告,具體步驟如下:
導入相關庫和模塊
定義一個測試套件,添加測試用例
定義一個測試報告的文件名和路徑
定義一個測試運行器,傳入測試報告的文件對象和相關參數
使用測試運行器來運行測試套件
我們可以將這些代碼保存為 run.py,并放在項目的根目錄下。具體代碼如下:
import unittestfrom HTMLTestRunner_api import HTMLTestRunnerfrom test_cases.test_api import TestAPI# 定義一個測試套件suite = unittest.TestSuite()# 添加測試用例suite.addTest(unittest.makeSuite(TestAPI))# 定義一個測試報告的文件名和路徑report_file = "reports/test_report.html"# 定義一個測試運行器,傳入測試報告的文件對象和相關參數with open(report_file, "wb") as f: runner = HTMLTestRunner(f, title="接口自動化測試報告", description="用例執(zhí)行情況") # 使用測試運行器來運行測試套件 runner.run(suite)
四、查看結果
運行 run.py 文件后,我們可以在 reports 目錄下看到生成的 test_report.html 文件,打開它,我們可以看到以下內容:
我們可以看到,共有 11 個測試用例,通過 6 個,失敗 5 個。我們還可以看到每個測試用例的詳細信息,包括用例名稱、請求地址、請求參數、預期結果、實際結果等。我們還可以看到一些圖表、日志、截圖等。
這樣,我們就完成了用 python +ddt+excel 實現(xiàn)接口自動化測試的過程。
總結
以上就是勇哥今天為各位小伙伴準備的內容,如果你想了解更多關于Python自動化測試的知識和技巧,歡迎關注:
我的公眾號:百態(tài)測試
博客(奈非天的主頁 - 博客園 (cnblogs.com))
我會不定期地分享更多的精彩內容。感謝你的閱讀和支持!
本文來自博客園,作者:奈非天,轉載請注明原文鏈接:https://www.cnblogs.com/Nephalem-262667641/p/17460169.html
標簽:
- 中消協(xié)發(fā)布消費警示:警惕培訓班退費騙局 2023-06-08 03:55:22
- 今日紙黃金價格走勢最新查詢(2023年6月7日) 2023-06-08 03:38:32
- 環(huán)球熱點評!民生加銀智造2025增聘基金經理李... 2023-06-08 03:31:16
- 今天高考返程和赴考時段廣州有雷陣雨|每日觀點 2023-06-08 03:16:51
- 微資訊!領導看了給你加薪!python +ddt+exce... 2023-06-08 03:41:16
- GaussDB(DWS)查詢過濾器原理與應用 2023-06-08 04:03:05
- 中消協(xié)發(fā)布消費警示:警惕培訓班退費騙局 2023-06-08 03:55:22
- 金至尊今天黃金價格多少一克(2023年6月7日) 2023-06-08 03:48:52
- 金巧福黃金價格今天多少一克(2023年06月07日) 2023-06-08 03:51:25
- 全球熱議:金巧福鉑金多少錢一克(2023年06月07... 2023-06-08 03:45:10
- 天天快資訊:美聯(lián)儲也進入靜默期 金價維持窄幅震蕩 2023-06-08 03:32:21
- 今日黃金期貨價格實時行情(2023年6月7日) 2023-06-08 03:38:00
- 今日紙黃金價格走勢最新查詢(2023年6月7日) 2023-06-08 03:38:32
- 敬請收聽!蕪湖市人民檢察院為您帶來《蕪湖婦... 2023-06-08 03:32:10
- 【天天報資訊】東京股市明顯回落 2023-06-08 03:38:07
- 陜西公安全力護航高考 2023-06-08 03:30:37
- 重慶警方破獲一電鍍廠特大污染環(huán)境案 天天視訊 2023-06-08 03:37:53
- 焦點快報!洪都拉斯總統(tǒng)將訪華 中國外交部介紹... 2023-06-08 03:18:54
- 廣西壯族小伙的軍旅夢:從籃球冠軍到“武警精... 2023-06-08 03:18:09
- 環(huán)球熱點評!民生加銀智造2025增聘基金經理李... 2023-06-08 03:31:16
- 受賄1992615.31元!陳克祥一審獲刑三年半 天天速遞 2023-06-08 03:05:42
- 海關總署:前5個月民營企業(yè)進出口總額同比增長13.1% 2023-06-08 03:22:32
- 速看:雷雨大風+冰雹+龍卷!黑龍江省發(fā)布龍卷預警 2023-06-08 03:21:39
- 廣州啟動一級保供電護航高考,25輛應急發(fā)電車... 2023-06-08 03:15:08
- 赴考滿分!送考滿分!高考首日,好的故事開頭-... 2023-06-08 03:16:15
- 今天高考返程和赴考時段廣州有雷陣雨|每日觀點 2023-06-08 03:16:51
- c1駕駛證能開摩托車么_c1駕駛證能開摩托車 2023-06-08 02:55:52
- 全球微動態(tài)丨斯琴高麗的傷心百度網盤下載地址_... 2023-06-08 03:04:01
- 當前消息!梅縣教育局局長_梅縣教育局 2023-06-08 03:02:04
- 世界短訊!美妙旋律極光之夢在線播放_美妙旋律... 2023-06-08 03:11:36
- 天天實時:大蒜粉圖片_大蒜粉 2023-06-08 03:05:17
- 港股異動 | ASMPT(00522)漲超5% 機構稱行業(yè)... 2023-06-08 02:52:11
- 全球微頭條丨朱雀基金增持金力永磁(06680)11.0... 2023-06-08 02:54:58
- 申萬宏源:首予洲際船務(02409)“買入”評級 ... 2023-06-08 02:53:32