領(lǐng)導(dǎo)看了給你加薪!python +ddt+excel 一招鮮,接口自動(dòng)化測(cè)試輕松搞定,測(cè)試報(bào)告驚艷四座!
- 博客園
- 2023-06-07 17:25:27
“接口自動(dòng)化測(cè)試是指通過編寫代碼或使用工具,模擬用戶發(fā)送請(qǐng)求,驗(yàn)證接口是否符合設(shè)計(jì)規(guī)范和功能需求的過程。”
如何用 python +ddt+excel 實(shí)現(xiàn)接口自動(dòng)化測(cè)試
接口自動(dòng)化測(cè)試可以提高測(cè)試效率和質(zhì)量,節(jié)省測(cè)試成本和時(shí)間,保證測(cè)試覆蓋率和可維護(hù)性。
讓勇哥帶你入門如何用 python +ddt+excel 實(shí)現(xiàn)接口自動(dòng)化測(cè)試,請(qǐng)瞧如下內(nèi)容:
(相關(guān)資料圖)
一、準(zhǔn)備工作
1. 安裝 python 環(huán)境
python 是一種簡潔、優(yōu)雅、易學(xué)的編程語言,它有豐富的第三方庫和社區(qū)支持,非常適合用來進(jìn)行接口自動(dòng)化測(cè)試。安裝 python 的3.0以上的版本),并配置好環(huán)境變量,以便在命令行中使用 python 命令。
2. 安裝相關(guān)庫
為了進(jìn)行接口自動(dòng)化測(cè)試,我們需要安裝以下幾個(gè)庫:
requests:用來發(fā)送 HTTP 請(qǐng)求,支持各種方法、參數(shù)、頭部、身份驗(yàn)證等。
xlrd:用來讀取 excel 文件中的數(shù)據(jù),支持 xls 和 xlsx 格式。
openpyxl:用來寫入 excel 文件中的數(shù)據(jù),支持 xlsx 格式。
ddt:用來實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)測(cè)試,可以從 excel 文件中讀取多組數(shù)據(jù),并生成多個(gè)測(cè)試用例。
unittest:用來編寫和執(zhí)行測(cè)試用例,支持?jǐn)嘌?、前置后置條件、測(cè)試套件等。
HTMLTestRunner_api:用來生成 HTML 格式的測(cè)試報(bào)告,支持圖表、日志、截圖等。
我們可以使用 pip 命令來安裝這些庫,例如:
pip install requests
二、設(shè)計(jì)測(cè)試
1. 編寫 excel 文件
我們需要在 excel 文件中填寫接口的相關(guān)信息,包括:
接口名稱
請(qǐng)求地址
請(qǐng)求方法
請(qǐng)求參數(shù)
預(yù)期結(jié)果
例如:
我們可以將這個(gè) excel 文件保存為 test_data.xlsx,并放在項(xiàng)目的 test_datas 目錄下。
2. 封裝 excel 操作
為了方便地讀取和寫入 excel 文件中的數(shù)據(jù),我們需要封裝一些 excel 操作的函數(shù),例如:
打開表單
獲取表頭
獲取所有數(shù)據(jù)
寫入數(shù)據(jù)
我們可以將這些函數(shù)定義在一個(gè)類中,并保存為 excel_handler.py,并放在項(xiàng)目的 Lib 目錄下。具體代碼如下:
from openpyxl import load_workbookfrom openpyxl.worksheet.worksheet import Worksheetclass ExcelHandler(): """操作Excel""" def __init__(self, file): """初始化函數(shù)""" 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): """讀取除表頭外所有數(shù)據(jù)(除第一行外的所有數(shù)據(jù))""" 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): """獲取所有數(shù)據(jù),將表頭與內(nèi)容結(jié)合整...."""... return data
3. 封裝 requests 請(qǐng)求
為了方便地發(fā)送 HTTP 請(qǐng)求,我們需要封裝一些 requests 請(qǐng)求的函數(shù),例如:
初始化 session
發(fā)送請(qǐng)求
關(guān)閉 session
我們可以將這些函數(shù)定義在一個(gè)類中,并保存為 requests_handler.py,并放在項(xiàng)目的 Lib 目錄下。具體代碼如下:
import requestsclass HTTPHandler: # 初始化 def __init__(self): self.session = requests.Session() # 定義一個(gè)方法,接收訪問http請(qǐng)求的方式 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") # 關(guān)閉session會(huì)話 def close_session(self): self.session.close()
三、執(zhí)行測(cè)試
1. 編寫測(cè)試用例
我們需要使用 unittest 和 ddt 來編寫和執(zhí)行測(cè)試用例,具體步驟如下:
導(dǎo)入相關(guān)庫和模塊
定義一個(gè)測(cè)試類,繼承 unittest.TestCase
定義一個(gè)類方法,用來初始化 session 和讀取 excel 文件中的數(shù)據(jù)
使用 @ddt.data 裝飾器,傳入 excel 文件中的數(shù)據(jù)
定義一個(gè)測(cè)試方法,用來發(fā)送請(qǐng)求,并斷言響應(yīng)結(jié)果是否符合預(yù)期
我們可以將這些代碼保存為 test_api.py,并放在項(xiàng)目的 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("請(qǐng)求地址") args = eval(params.get("請(qǐng)求參數(shù)")) if isinstance(params.get("請(qǐng)求參數(shù)"), str) else params.get("請(qǐng)求參數(shù)") method = params.get("請(qǐng)求方法") expct_res1 = params.get("預(yù)期結(jié)果") # 發(fā)起請(qǐng)求,獲取返回?cái)?shù)據(jù) result = self.s.visit(url, method, params=args) # 分析返回?cái)?shù)據(jù) response_data = result["name"] # 斷言響應(yīng)結(jié)果是否符合預(yù)期 self.assertEqual(expct_res1, response_data) @classmethod def tearDownClass(cls): cls.s.close_session()
2. 生成測(cè)試報(bào)告
我們需要使用 HTMLTestRunner_api 來生成 HTML 格式的測(cè)試報(bào)告,具體步驟如下:
導(dǎo)入相關(guān)庫和模塊
定義一個(gè)測(cè)試套件,添加測(cè)試用例
定義一個(gè)測(cè)試報(bào)告的文件名和路徑
定義一個(gè)測(cè)試運(yùn)行器,傳入測(cè)試報(bào)告的文件對(duì)象和相關(guān)參數(shù)
使用測(cè)試運(yùn)行器來運(yùn)行測(cè)試套件
我們可以將這些代碼保存為 run.py,并放在項(xiàng)目的根目錄下。具體代碼如下:
import unittestfrom HTMLTestRunner_api import HTMLTestRunnerfrom test_cases.test_api import TestAPI# 定義一個(gè)測(cè)試套件suite = unittest.TestSuite()# 添加測(cè)試用例suite.addTest(unittest.makeSuite(TestAPI))# 定義一個(gè)測(cè)試報(bào)告的文件名和路徑report_file = "reports/test_report.html"# 定義一個(gè)測(cè)試運(yùn)行器,傳入測(cè)試報(bào)告的文件對(duì)象和相關(guān)參數(shù)with open(report_file, "wb") as f: runner = HTMLTestRunner(f, title="接口自動(dòng)化測(cè)試報(bào)告", description="用例執(zhí)行情況") # 使用測(cè)試運(yùn)行器來運(yùn)行測(cè)試套件 runner.run(suite)
四、查看結(jié)果
運(yùn)行 run.py 文件后,我們可以在 reports 目錄下看到生成的 test_report.html 文件,打開它,我們可以看到以下內(nèi)容:
我們可以看到,共有 11 個(gè)測(cè)試用例,通過 6 個(gè),失敗 5 個(gè)。我們還可以看到每個(gè)測(cè)試用例的詳細(xì)信息,包括用例名稱、請(qǐng)求地址、請(qǐng)求參數(shù)、預(yù)期結(jié)果、實(shí)際結(jié)果等。我們還可以看到一些圖表、日志、截圖等。
這樣,我們就完成了用 python +ddt+excel 實(shí)現(xiàn)接口自動(dòng)化測(cè)試的過程。
總結(jié)
以上就是勇哥今天為各位小伙伴準(zhǔn)備的內(nèi)容,如果你想了解更多關(guān)于Python自動(dòng)化測(cè)試的知識(shí)和技巧,歡迎關(guān)注:
我的公眾號(hào):百態(tài)測(cè)試
博客(奈非天的主頁 - 博客園 (cnblogs.com))
我會(huì)不定期地分享更多的精彩內(nèi)容。感謝你的閱讀和支持!
本文來自博客園,作者:奈非天,轉(zhuǎn)載請(qǐng)注明原文鏈接:https://www.cnblogs.com/Nephalem-262667641/p/17460169.html
關(guān)鍵詞:
福建將提升閩政通APP精準(zhǔn)檢索、智能推送能力 開發(fā)人臉(語音)識(shí)別等功能
- 福建出臺(tái)促進(jìn)外資擴(kuò)增量穩(wěn)存量提質(zhì)量若干政策措施|熱門看點(diǎn)
- 廈大團(tuán)隊(duì)發(fā)現(xiàn)阿爾茨海默病的治療新靶點(diǎn)
- 2023年影視產(chǎn)業(yè)推介會(huì)在福建廈門舉行|世界速讀
- 【環(huán)球聚看點(diǎn)】2023年廈金海域聯(lián)合增殖放流活動(dòng)舉行
- 主題教育進(jìn)行時(shí) | 以賽事經(jīng)濟(jì)助推體育產(chǎn)業(yè)高質(zhì)量發(fā)展
- 高考期間福建有雷雨天氣 體感悶熱需防中暑
- 2023年福建省普通高考順利開考 23.2萬名考生參加考試_天天報(bào)道
- 環(huán)球關(guān)注:福建:扎實(shí)做好2023年高考無線電安全保障工作 護(hù)航高考
- 以主題教育為動(dòng)力 福建省體育局全力推動(dòng)全民健身工作高質(zhì)量發(fā)展 當(dāng)前資訊
- 領(lǐng)導(dǎo)看了給你加薪!python +ddt+excel 一2023-06-07
- 環(huán)球快訊:可能造成一定損失!北京2區(qū)發(fā)布冰2023-06-07
- 國際航班有序恢復(fù),北京邊檢12367日均接聽2023-06-07
- 美媒稱布林肯將在幾周內(nèi)訪華,中方能否證實(shí)2023-06-07
- 3部作品獲第十三屆中國舞蹈“荷花獎(jiǎng)”古典2023-06-07
- 天天觀點(diǎn):16415家企業(yè)移出失信名單 山東2023-06-07
- 當(dāng)前快訊:一月四場,大眾醬香的命題,容大2023-06-07
- 補(bǔ)充電解質(zhì)最好的飲料灌裝機(jī)_補(bǔ)充電解質(zhì)最2023-06-07
- 網(wǎng)上從哪里批發(fā)衣服便宜嗎-當(dāng)前熱議2023-06-07
- 快報(bào):水滸傳中大鬧野豬林的人是誰扮演的_2023-06-07
- 長高電新(002452.SZ):正在開展衡陽產(chǎn)業(yè)2023-06-07
- 當(dāng)前看點(diǎn)!男孩背腦癱同學(xué)10年今天一起高考2023-06-07
- 江西省出臺(tái)舉措加快推進(jìn)農(nóng)業(yè)產(chǎn)業(yè)化高質(zhì)量發(fā)2023-06-07
- 海融科技(300915)6月7日主力資金凈買入652023-06-07
- 新城市(300778)6月7日主力資金凈賣出24962023-06-07
- 值得買(300785)6月7日主力資金凈賣出475.2023-06-07
- 天天熱點(diǎn)!中國男足新一期24人集訓(xùn)名單公布2023-06-07
- 中國圍棋快棋公開賽落子2023-06-07
- 眼科專家張弘:用精湛技術(shù)守護(hù)光明2023-06-07
- 天天簡訊:協(xié)鑫能科調(diào)整發(fā)行可轉(zhuǎn)債方案 刪2023-06-07
- 澳優(yōu)出售新西蘭奶粉工廠 買方為伊利全資子2023-06-07
- 智能表面產(chǎn)品和新型底盤產(chǎn)品目前有沒有獲得2023-06-07
- 環(huán)球快報(bào):重生之嫡女記事 云一一(重生之2023-06-07
- 人教版四年級(jí)上冊(cè)數(shù)學(xué)口算題卡圖片(人教版2023-06-07
- 蠻王柯南電影在線觀看(蠻王柯南迅雷下載)2023-06-07
- 短訊!中國人民大學(xué)教授張杰回應(yīng)每經(jīng):構(gòu)建2023-06-07
- 環(huán)球播報(bào):讓老小區(qū)煥發(fā)新生,“三駕馬車”2023-06-07
- 尋底過程中......2023-06-07
- 當(dāng)前熱議!兒童智能手表亟須“適兒化”改造2023-06-07
- 追尋“詩與遠(yuǎn)方”也要安全第一2023-06-07