人人干97-人人干操-人人干狠狠操-人人干美女-国产人妖在线-国产人妖在线播放

每日播報(bào)!領(lǐng)導(dǎo)看了給你加薪!python +ddt+excel 一招鮮,接口自動(dòng)化測(cè)試輕松搞定,測(cè)試報(bào)告驚艷四座!
時(shí)間:2023-06-08 05:04:41  來源:博客園  
1
聽新聞

接口自動(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)容:

一、準(zhǔn)備工作

1. 安裝 python 環(huán)境

python 是一種簡(jiǎn)潔、優(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)嘌浴⑶爸煤笾脳l件、測(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)鍵詞:

男朋友一晚弄了我5次正常吗| 久久久久久久精品免费看| 亚洲熟妇人妻系列| 女人越喊男人越往里寨电视剧| 成人AV在线一区二区三区| 小雪被老汉各种姿势玩弄| 久久精品亚洲精品国产色婷| ⅩXXⅩ内射意大利老妇| 四虎影视APP IOS| 精品久久久久久人妻无码中文字幕| 重生后我抛弃了负心公主| 色8激情欧美成人久久综合电| 国产午夜成人免费看片| 在线精品免费视频无码的| 日韩精品无码中文字幕第一区| 国产无遮挡又黄又爽免费吃瓜视频| 英语老师没戴套让我C了一节课| 人妻天天爽夜夜爽一区二区| 国产免费无码一区二区三区| 亚洲中文字幕无码爆乳APP| 人妻妺妺窝人体色WWW聚色窝| 国产女人乱子对白AV片| 在线视频一区二区三区| 上到少妇叫爽TUBE| 精品无人区一区二区三区在线| ASS鲜嫩鲜嫩PICS日本| 无码人妻精品一区二区蜜桃网站| 久久不见久久见免费影院3| 巴西大肥熟女毛茸茸| 亚洲AV涩涩涩成人网站| 女人被男人吃奶到高潮| 国产精品久久久久久亚洲影视| 又湿又紧又大又爽A视频男| 少妇人妻AV毛片在线看| 久久精品蜜芽亚洲国产AV| 宝贝我不想带小雨伞了| 亚洲AV之男人的天堂| 欧美人与动牲交免费观看| 国产无人区码SUV| 111111少妇影院| 无码一区二区三区中文字幕| 蜜桃Av噜噜一区二区三区绯色 | 亚洲欧美一区二区三区在线| 人妻丰满AV中文久久不卡| 国精产品一二三产区| BT天堂资源种子在线| 亚欧色一区W666天堂| 欧美无人区码卡二卡3卡4乱码 | 肥胖孕妇BBWBBWBBW| 亚洲熟女丰满多毛XXXXX| 三个男人让我爽了一夜| 久久婷婷六月综合色液啪| 国产95在线 | 免费| 伊人久久精品亚洲午夜| 玩弄丰满少妇XXXXX| 男女高潮免费观看无遮挡| 国产人成高清在线视频99最全资 | 一面膜上边一面膜下边韩国| 书房双乳晃动干柴烈火| 美女脱个精光露出奶头和尿口| 国产精品毛片一区二区三区| 377P欧洲日本亚洲大胆| 亚洲A∨精品一区二区三区| 欧洲精品VA无码一区二区三区| 狠狠做深爱婷婷久久综合一区| 菠萝菠萝蜜菠萝菠萝5| 亚洲中文久久精品无码| 婷婷久久久亚洲欧洲日产国码AV| 免费免费视频片在线观看| 国精产品W灬源码1688在线| 把插八插露脸对白内射| 亚洲午夜福利在线观看| 天天摸夜夜添狠狠添婷婷| 女自慰喷水免费观看WWW久久| 黑人巨鞭大战丰满少妇| 成人无码精品1区2区3区免费看| 野花香在线视频免费观看第一集| 偷拍东北熟女BBWW| 欧美ZC00O人与善交| 精品国产亚洲第一区二区三区 | 777米奇色狠狠888俺也去乱| 亚洲AV永久无码一区二区三区| 日韩AV无码一区二区| 巨RU麻麻奶水雪白肥美喷| 国产情侣疯狂作爱系列| 抱着边走边撞水流了一地的水| 夜夜躁狠狠躁日日躁| 性AV无码天堂VR专区| 日本欧美大码A在线观看| 美女扒开内裤无遮挡| 韩国女星潜规39集无删减| 动漫成人无码免费视频在线播 | 浴室人妻的情欲HD三级| 亚欧乱色国产精品免费九库| 日本无人区码一二三区别| 毛很浓密超多黑毛的少妇| 好儿子你插得太深了| 公粗挺进了我的密道在线播放 | 亚洲最大av在线| 性XXXⅩ俄罗斯女人| 日韩激情在线小视频观看| 免费看成人A级毛片| 精品久久香蕉国产线看观看亚洲| 国产成人精品18P| 巴西FREE性VIDEO极品| 中文精品久久久久人妻不卡| 亚洲成人AV在线| 推拿完整版中文字幕| 人人妻人人妻人人片色AV| 麻花豆传媒剧国产MV在线| 精品第一国产综合精品蜜芽| 国产精品国三级国产AV| 成人18禁在线播放| A4YY午夜福利视频无码| 一本无码人妻在中文字幕免费| 亚洲AV无码精品色夜午夜网址 | 双飞两个丰满少妇11P| 欧美最猛性XXXXX大叫| 美女把尿口扒开让男人桶| 久久AⅤ人妻少妇嫩草影院| 国产一码二码三码区别| 国产爱豆剧传媒在线观看视频| 凹厕所XXXXBBBB偷拍视频| 999ZYZ玖玖资源站在线观看| 一区二区三区AV| 亚洲色大成网站WWW久久| 亚洲AV成人无码一二三在线观看| 四虎影视在线观看2413| 日韩精品人妻系列无码专区免费| 欧美成人伊人久久综合网| 免费AV片大尺度在线观看| 久久午夜羞羞影院免费观看| 金瓶梅之爱的奴隶| 国产尤物精品视频| 国产乱人伦AV在线A麻豆| 国产二级一片内射视频插放 | 中文字幕日产无码| 一区二区AV在线| 亚洲制服无码一区二区三区| 亚洲国产成人精品无码区2021| 性国产SE╳O色欲A片免费观看| 天天影视色香欲综合久久| 色综合伊人色综合网站无码| 日韩丰满少妇无码内射| 日本BBWW高潮BBWR| 人妻的渴望波多野结衣| 欧美日韩人妻一区二区| 欧美XXXX做受欧美.88| 美日韩在线视频一区二区三区| 久章草在线毛片视频播放 | 国内精品久久久人妻中文字幕| 国产精品污WWW一区二区三区| 国产成人精品久久一区二区| 丰满人妻熟妇乱又伦精品视| 粗大的内捧猛烈进出视频嘿嘿视频| 办公室的交易HD中文字幕| 波多野结衣在线播放| 爆乳大森しずか无码| 不屈的儿媳妇电视剧汉语版| 别揉我奶头~嗯~啊~动漫网站| 拔萝卜高清视频大全免费观看| 啊灬用力灬啊灬啊灬啊灬电子书| YW尤物爆乳网站点击进入| 拔萝卜电视剧高清免费观看全集| А√在线中文网新版地址在线 | 在线观看国产精品乱码APP| 在教室伦流澡到高潮HGL动漫 | 黑人大雞巴XXOO视频| 黑人精品XXX一区一二区| 激情综合一区二区迷情校园| 精品久久久久久综合日本| 九九久久精品国产| 久久久综合九色综合88| 浪潮AV激情高潮国产精品| 蜜臀AV无码人妻精品| 男生把手放进我内裤揉摸好爽 | 浪货趴办公桌~H揉| 麻豆国内剧情AV在线素人搭讪 | 久久夜色精品国产嚕嚕亚洲AV| 老牛精品亚洲成AV人片| 免费观看黄A级毛片| 欧美精产国品一二三类产品特点 | 2021av在线视频| GAYⅩXX小奶受GV浪小辉| 草莓视频18在线在线播放| 超碰AⅤ人人做人人爽| 公粗挺进了我的密道在线观看| 国产成人无码午夜视频在线观看| 国产精品毛片无遮挡高清| 国语对白做受XXXXX在线中| 精品日产一区二区三区| 久久婷婷人人澡人爽人人喊| 免费免费视频片在线观看| 欧美在线视频一区二区| 日韩精品无码AV中文无码版| 无码AV熟妇素人内射vr在线| 亚洲AⅤ日韩AV电影在线观看| 亚洲乱码一区二区三区在线观看| 伊人久久大香线蕉AV五月天宝贝 | 久久综合九色综合欧美98|