成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 基于Python的接口自動化unittest測試框架和ddt數(shù)據(jù)驅(qū)動詳解

基于Python的接口自動化unittest測試框架和ddt數(shù)據(jù)驅(qū)動詳解

熱門標簽:400電話在線如何申請 甘肅高頻外呼系統(tǒng) 滴滴地圖標注公司 智能電話機器人調(diào)研 杭州房產(chǎn)地圖標注 江門智能電話機器人 地圖標注可以遠程操作嗎 天津塘沽區(qū)地圖標注 如何申請400電話代理

引言

在編寫接口自動化用例時,我們一般針對一個接口建立一個.py文件,一條接口測試用例封裝為一個函數(shù)(方法),但是在批量執(zhí)行的過程中,如果其中一條出錯,后面的用例就無法執(zhí)行,還有在運行大量的接口測試用例時測試數(shù)據(jù)如何管理和加載。針對測試用例加載以及執(zhí)行控制,python語言提供了unittest單元測試框架,將測試用例編寫在unittest框架下,使用該框架可以單個或者批量加載互不影響的用例執(zhí)行及更靈活的執(zhí)行控制,對于更好的進行測試數(shù)據(jù)的管理和加載,這里我們引入數(shù)據(jù)驅(qū)動的模塊:ddt,測試數(shù)據(jù)和測試腳本的分離,通過ddt數(shù)據(jù)驅(qū)動來加載測試數(shù)據(jù)到測試用例腳本中,通常在接口自動化測試中會將unittest和ddt結(jié)合起來使用,從而實現(xiàn)測試用例腳本和測試數(shù)據(jù)的載入來完成測試的執(zhí)行。下面來看看unittest框架和ddt這兩個模塊具體的應(yīng)用。

一、unittest測試框架

unittest單元測試框架是python語言的一套標準模塊,封裝提供了諸多操作測試用例和用例加載、測試前置和場景恢復(fù)以及測試結(jié)果輸出等一系列類和方法。

1.unittest框架中最核心四個組件概念:

(1)TestCase:測試用例類,編寫測試用例腳本時需要繼承該類,從而具有該類的屬性和方法,一個TestCase實例就是一個測試用例,其中測試用例方法都以test開頭。

(2)TestSuite:測試集,也就是測試用例的集合,用來組織用例。

(3)testrunner:用來執(zhí)行測試用例,并返回測試用例的執(zhí)行結(jié)果,可以用圖形或者文本將測試結(jié)果形象地展現(xiàn)出來,HTMLTestRunner用來生成圖形化的報告,TextTestRunner用來生成簡單的文本測試結(jié)果。

(4)testfixure:測試夾件,主要用于測試用例的前置初始化和執(zhí)行后的銷毀。

2.testcase----測試用例

  • 新建一個的.py測試用例文件必須是test開頭,如test_login.py,主要后續(xù)用于識別測試用例文件編寫測試用例的類,必須繼承unittest.TestCase,做為測試類
  • 測試類中用例的方法名稱必須以test開頭,用于識別測試用例數(shù)
  • 測試類中的用例執(zhí)行順序,按照以test開頭的方法后的Ascill碼順序執(zhí)行(0~9,A~Z,a~z)

3.testfixure----測試夾件

  • 也叫測試夾具,主要是用例前置的初始化以及執(zhí)行后的銷毀
  • 測試夾件提供兩種方法,一種是類級別的:setup()和teardown(),一種是方法級別的:setUpClass()和tearDownClass()
  • 類級別的測試夾件,每一條測試用例執(zhí)行之前與之后都要運行一次setup()和teardown();方法級別的測試夾件,所有測試用例執(zhí)行之前到執(zhí)行完成只運行一次setUpClass()和tearDownClass()

下面通過簡單的代碼示例看看TestCase與TestFixure的使用

(1)使用setup()和teardown(),創(chuàng)建test_666.py文件編輯如下代碼:

import unittest
 
class test_unittest(unittest.TestCase):
 def setUp(self):
  print("測試環(huán)境初始化,開始執(zhí)行setup")
 
 def tearDown(self):
  print("測試執(zhí)行完成,運行teardown")
  print("------------------------------")
 def test_a(self):
  print("開始執(zhí)行test_a用例")
 
 def test_A(self):
  print("開始執(zhí)行test_A用例")
 
 def test_1(self):
  print("開始執(zhí)行test_1用例")
 
 def notest_1(self):
  print("不執(zhí)行notest_1用例")
 
if __name__ == "__main__":
 unittest.main()

執(zhí)行后,輸出如下:

在代碼中我們編寫了4個def用例方法,只執(zhí)行了3個def,因為最后一個def不是test開頭??梢钥吹矫繄?zhí)行一個def用例,setup()和teardown()都會執(zhí)行一次,其中按照執(zhí)行順序:test_1最先執(zhí)行,test_A其后,test_a最后執(zhí)行

(2)使用setUpClass()和tearDownClass()

對于setUpClass()和tearDownClass()我們只需將上面代碼,稍微修改即可

import unittest
 
class test_unittest(unittest.TestCase):
 @classmethod
 def setUpClass(cls):
  print("測試環(huán)境初始化,開始執(zhí)行setup")
 @classmethod
 def tearDownClass(cls):
  print("測試執(zhí)行完成,運行teardown")
  print("------------------------------")
 def test_a(self):
  print("開始執(zhí)行test_a用例")
 
 def test_A(self):
  print("開始執(zhí)行test_A用例")
 
 def test_1(self):
  print("開始執(zhí)行test_1用例")
 
if __name__ == "__main__":
 unittest.main()

 運行效果如下:

可以看到所有用例都執(zhí)行完后,setUpClass()和tearDownClass()只運行了一次。因此在編寫一個測試腳本時,里面寫了多個測試用例,

這時我們希望的是所有用例執(zhí)行完成后再銷毀環(huán)境,這時使用setUpClass()tearDownClass()就比較好了。

3.TestSuite----測試集

unittest框架下提供了unittest.TestSuite()和unittest.TestLoader()類,這兩個類下封裝了加載用例的方法,用于加載測試用例到測試集中

(1)unittest.TestSuite()提供單個用例加載方法

addTest():單個用例加載,當然也可以將多個用例的方法名放入列表中添加到addTest()中,加載多條測試用例

(2)unittest.TestLoader()提供批量加載或發(fā)現(xiàn)用例的方法

loadTestsFromTestCase(測試類名):添加一個測試類
loadTestsFromModule(模塊名):添加一個模塊
discover(測試用例的所在目錄):指定目錄去加載,會自動尋找這個目錄下所有符合命名規(guī)則的測試用例

4.testrunner----測試運行

testrunner就是用來執(zhí)行測試用例的,并且可以生成相應(yīng)的測試報告。測試報告有兩種展示形式,一種是text文本,一種是html格式。
​html格式的就是HTMLTestRunner了,HTMLTestRunner是Python標準庫的unittest框架的一個擴展,它可以生成一個直觀清晰的HTML測試報告。使用的前提就是要下載HTMLTestRunner.py,下載完后放在python的安裝目錄下的scripts目錄下即可。

通過代碼示例看看testsuite和testrunner這兩個組件的使用,上面的test_666.py用例文件我們已經(jīng)寫好了3條用例了,現(xiàn)在我們來加載這些用例

新建run_case.py文件,該文件和test_666.py文件放置在同一個包文件:test下,run_case.py文件編輯如下代碼運行:

import unittest
from test.test_666 import test_unittest
 
# 單個用例加載
suite = unittest.TestSuite()
case1 = test_unittest('test_1')
case2 = test_unittest('test_a')
suite.addTest(case1)
suite.addTest(case2)
print(suite)
print("------------------")
# 批量用例加載
case_path = r"E:\api_test\test"
# 按文件路徑加載,注意該文件為包文件即文件下有__init__.py
all_case = unittest.defaultTestLoader.discover(case_path,pattern="test_666*.py",top_level_dir=None)
all_case1 = unittest.defaultTestLoader.loadTestsFromTestCase(test_unittest) # 按類名稱加載
print(all_case)
print("------------------")
print(all_case1)

 輸出結(jié)果如下:

E:\api_test\Scripts\python.exe E:/api_test/test_bak/run_case.py
unittest.suite.TestSuite tests=[test.test_666.test_unittest testMethod=test_1>, test.test_666.test_unittest testMethod=test_a>]>
------------------
unittest.suite.TestSuite tests=[unittest.suite.TestSuite tests=[unittest.suite.TestSuite tests=[test_666.test_unittest testMethod=test_1>, test_666.test_unittest testMethod=test_A>, test_666.test_unittest testMethod=test_a>]>]>]>
------------------
unittest.suite.TestSuite tests=[test.test_666.test_unittest testMethod=test_1>, test.test_666.test_unittest testMethod=test_A>, test.test_666.test_unittest testMethod=test_a>]>
 
Process finished with exit code 0

 通過unittest框架下提供的加載用例的諸多方法,我們就可以單個或者批量加載用例,后續(xù)可以將加載的用例集引入到HTMLTestRunner.py模塊生成可視化的測試報告

5.assert----測試斷言

無論是什么樣的測試用例,最后都需要有用例執(zhí)行后的驗證,在接口自動化測試中我們執(zhí)行完接口用例也需要驗證斷言用例執(zhí)行是否滿足我們的預(yù)期。unittest提供了豐富的斷言方法,常見的斷言如下表:

二、ddt數(shù)據(jù)驅(qū)動

  • @ddt:類的裝飾器,繼承的是TestCase類
  • @data():@data裝飾符可以把參數(shù)當成測試數(shù)據(jù),參數(shù)可以是單個值、列表、元祖、字典這些類型,用于輸入測試數(shù)據(jù)
  • @unpack:分解數(shù)據(jù)標志,主要是把元祖和列表解析成多個參數(shù)
  • @file_data():輸入文件,如json或者yaml類型文件

(1)輸入簡單的參數(shù):單個值、列表、元祖、字典

import unittest
from ddt import data,unpack,ddt
 
@ddt
class myddt(unittest.TestCase):
 
 @data("123")    # 單個值
 def test1(self,testdata1):
  print(testdata1)
  print("------------------")
 
 @data([1,2,3],[4,5,6]) # 列表
 def test2(self,testdata2):
  print(testdata2)
  print("------------------")
"""
 @data((1, 2, 3))   # 元組
 def test2(self, testdata3):
  print(testdata3)
  print("------------------")
 
 @data({'zhangshan':1,'wangwu':2,'lisi':3}) # 字典
 def test2(self, testdata4):
  print(testdata4)
  print("------------------")
"""
if __name__ == '__main__':
  unittest.main()

?。?)使用@unpack對復(fù)雜數(shù)據(jù)結(jié)構(gòu),如元組、列表數(shù)據(jù)進行分解

代碼示例:

import unittest
from ddt import data,unpack,ddt
 
@ddt
class myddt(unittest.TestCase):
 
 @data([1,2],[3,4]) # 列表
 @unpack
 def test2(self, testdata1,testdata2):
  print("拆解的第一個參數(shù):",testdata1)
  print("拆解的第二個參數(shù):", testdata2)
  print("------------------")
 
if __name__ == '__main__':
  unittest.main()

 運行后輸出如下:

(3)使用@file_data()輸入文件格式測試數(shù)據(jù)

編輯一個data.json的文件,代碼示例:

import unittest
from ddt import file_data,ddt
 
@ddt
class myddt(unittest.TestCase):
 
 @file_data(r"E:\api_test\test\data.json")
 def test1(self, *value):
  print(value)
 
if __name__ == '__main__':
  unittest.main()

 通過ddt和unittest框架的結(jié)合就可以實現(xiàn)測試用例腳本編寫、測試執(zhí)行控制以及測試數(shù)據(jù)的批量加載,從而完成不同接口測試用例的批量執(zhí)行和覆蓋測試不同測試場景。

到此這篇關(guān)于基于Python的接口自動化unittest測試框架和ddt數(shù)據(jù)驅(qū)動詳解的文章就介紹到這了,更多相關(guān)Python的接口自動化ddt數(shù)據(jù)驅(qū)動內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python測試框架unittest和pytest區(qū)別
  • python使用pytest接口自動化測試的使用
  • python 如何用 Hypothesis 來自動化單元測試
  • python 如何在測試中使用 Mock
  • python 基于DDT實現(xiàn)數(shù)據(jù)驅(qū)動測試
  • Python自動化測試基礎(chǔ)必備知識點總結(jié)
  • Python3 + Appium + 安卓模擬器實現(xiàn)APP自動化測試并生成測試報告
  • Appium+Python實現(xiàn)簡單的自動化登錄測試的實現(xiàn)
  • python如何進行基準測試

標簽:河池 德宏 重慶 漢中 東莞 臨汾 長春 廊坊

巨人網(wǎng)絡(luò)通訊聲明:本文標題《基于Python的接口自動化unittest測試框架和ddt數(shù)據(jù)驅(qū)動詳解》,本文關(guān)鍵詞  基于,Python,的,接口,自動化,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于Python的接口自動化unittest測試框架和ddt數(shù)據(jù)驅(qū)動詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于基于Python的接口自動化unittest測試框架和ddt數(shù)據(jù)驅(qū)動詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    黄色在线一区| 99久久.com| 欧美2区3区4区| 亚洲福利电影网| 黄色大片网站| 国内精品视频在线播放| 日本精品入口免费视频| 国产又黄又爽又猛免费app| 成人婷婷网色偷偷亚洲男人的天堂| 狠狠色丁香婷婷综合| 精品人妻在线播放| 成人高清电影网站| 日韩一级二级三级| 菠萝蜜视频网站入口| 国内精品久久久久久野外| 欧美亚洲国产日韩2020| 成人免费看片'免费看| 性欧美video高清bbw| 日本r级电影在线观看| 在线精品91av| 亚洲男人天堂网| 亚洲国产一二三区| 日本精品久久久久久久久久| 超碰在线99| 在线免费黄网| 天堂va欧美va亚洲va老司机| 亚洲高清资源综合久久精品| 亚洲欧美另类综合偷拍| 国产精品又粗又长| 天天视频一区二区三区| 欧美性xxxxxxx| 久久精品国产2020观看福利| 亚洲欧美va天堂人熟伦| 97超碰资源站在线观看| 嫩草黄色影院| 免费国产在线精品一区二区三区| 亚洲久久久久久久久久久| 国产尤物一区二区在线| 美女又黄又免费| 欧美日韩另类在线| 高清av中文在线字幕观看1| 亚洲人和日本人hd| 精品福利在线看| 天天射成人网| 蜜桃导航-精品导航| 国内自拍在线观看| 久久国产精品99久久人人澡| 男男gay无套免费视频欧美| 国产精品www| 亚洲激情中文在线| 天堂社区在线视频| 亚洲乱码免费伦视频| 成年人午夜视频在线观看| 国产精欧美一区二区三区白种人| 91精品国产九九九久久久亚洲| 亚洲香蕉av在线一区二区三区| 午夜剧场免费看| 精品产品国产在线不卡| 亚洲天堂av一区二区三区| 国产.精品.日韩.另类.中文.在线.播放| 久久99国产精品久久99| 激情小说亚洲一区| 成人女性文胸| 国产免费av一区| 中国女人内谢69xxxx视频| 香蕉视频官网在线观看日本一区二区| 99精品视频一区二区三区| 日本高清视频免费在线观看| 色呦呦在线免费观看| 综合在线观看色| 羞羞视频网站在线免费观看| 大片免费在线观看| 日本激情一区| 自拍偷在线精品自拍偷无码专区| 国产精品福利电影一区二区三区四区| 五月婷婷狠狠操| www.蜜臀av| 国产精品人人妻人人爽人人牛| 欧美激情久久久久久久| 欧美一区二区日韩| 99视频精品| 99热这里有精品| 欧美三级黄网| 先锋影音国产精品| 国产精品无码免费专区午夜| 在线观看的黄色网址| 亚洲欧美日韩视频二区| 国产精品不卡一区二区三区| 成人亚洲免费视频| 91视频亚洲| av网站大全免费| 国产精品后入内射日本在线观看| 麻豆视频在线观看| 亚洲深夜福利| 国产欧美韩国高清| 成人午夜免费电影| 能看av的网址| 水莓100在线视频| 九色网友自拍视频手机在线| 在线免费av播放| 中文字幕日韩一级| 亚洲午夜精品久久久久久久久| 亚洲字幕一区二区| 欧美亚洲一区| 亚洲最大的黄色网| 四虎成年永久免费网站| 在线毛片观看| 国产精品一区电影| 久久这里只有精品国产| 国产aⅴ超薄肉色丝袜交足| 成人h版在线观看| 欧美一级二级视频| 人妻巨大乳一二三区| 国产在线麻豆精品| 成人av男人的天堂| 久久久久久国产精品免费无遮挡| 久久精品在线视频| 亚洲精品专区| 久久综合九色综合网站| 91丨九色丨海角社区| 成人免费看片98欧美| 欧美福利专区| 亚洲日本欧美日韩高观看| 久久久久无码国产精品一区| 亚洲天堂a在线| 美女航空一级毛片在线播放| 高清国产一区二区三区| 国产99对白在线播放| 欧美性xxxx在线播放| 日韩精品在线一区| 国产乱码久久久久| 日日躁夜夜躁白天躁晚上躁91| 国产乱码精品一区二区三区亚洲人| 国产手机视频精品| 美女久久久久久久久久久| 美日韩一区二区三区| 99精品国产高清一区二区麻豆| 一级二级三级在线观看| 亚洲天堂国产精品| 又色又爽又高潮免费视频国产| 97久久精品人人做人人爽| 亚洲欧美日韩精品一区| **孕交吃奶水一级毛片| 91精品视频在线看| 黑人精品视频| 亚洲成人资源| 亚洲中文字幕无码不卡电影| 国产一区二区女| 国产日产欧美精品| 国产一区日韩二区欧美三区| 亚洲精选免费视频| 极品裸体白嫩激情啪啪国产精品| 欧美成人se01短视频在线看| 影音先锋中文在线视频| 亚洲最新av网站| www日韩中文字幕在线看| 欧美日韩一区二区三区在线电影| 亚洲免费一区二区| 99sesese| 亚洲乱码国产乱码精品| 青青草精品视频在线| 亚洲欧美激情一区| www污污网站在线看| 久久久久国产美女免费网站| www成人在线视频| 国产美女搞久久| 日韩性小视频| zjzjzjzjzj亚洲女人| 午夜av中文字幕| 在线免费av资源| 久久精品日产第一区二区| 亚洲国产精品第一区二区三区| 国产精品国产三级国产三级人妇| 久久久久久久久久一区| 成年女人色毛片免费| 精品视频一区 二区 三区| 日本一区二区三区视频视频| 精品国产亚洲一区二区三区大结局| 亚洲视频在线观看一区二区| 在线观看亚洲一区二区| 久久国际精品| 青春有你2免费观看完整版在线播放高清| 好男人官网在线| 国产午夜精品一区二区三区嫩草| 欧美禁忌电影| 最新日韩av| 国产浮力第一页| 麻豆视频观看网址久久| 天天干天天草天天射| 精品欧美国产一区二区三区| 日韩欧美专区| 久久综合桃花网| 欧美日韩乱国产| 美女被c出白浆| 久久久久久久久久久99999| 国产精品www| 亚洲免费电影在线观看| 国产欧美视频一区二区| wwwav91com| 亚洲色图插插| 噜噜噜天天躁狠狠躁夜夜精品| 国产在线一区二区视频| 国产不卡精品视频| www.xxx黄| 欧美日韩精品系列| 夜鲁很鲁在线视频| 国产精品xxx电影| 一区二区免费在线观看视频| 天堂精品视频| 国产精一区二区三区| 国语自产精品视频在线看抢先版图片| 欧美精品videossex88| 亚洲香蕉伊综合在人在线视看| 亚洲男女视频在线观看| 国内揄拍国内精品| 色婷婷免费视频| 在线观看免费视频综合| 国产精品激情偷乱一区二区∴| 亚洲三级电影在线观看| 九色视频成人自拍| 我不卡手机影院| 97人人爽人人爽人人爽| 黄色视屏免费在线观看| 欧美日韩伦理| 亚洲成人自拍偷拍| 国产一区二区三区不卡在线| 国产精品久久久乱弄| 视频一区在线| 亚洲一区二区中文字幕| 久久久午夜电影| 国产三级按摩推拿按摩| 五月婷婷之婷婷| 99只有精品| 色多多视频在线观看| 日日噜噜噜夜夜爽爽狠狠视频| 日韩欧美精品中文字幕| 久久精品视频在线播放| 看黄的a网站| 国产精品成人播放| 69日本xxxxxxxxx49| 国产精品一站二站| 亚洲一区二区三区四区在线| 97精品资源在线观看| 成人永久看片免费视频天堂| 久久婷婷国产91天堂综合精品| 日韩大陆av| 亚洲精品免费一二三区| 久久女同精品一区二区| 久久蜜桃av| 有码av在线| 欧美日韩一区二区国产| 九九九在线观看| 中文字幕人成高视频| av中文字幕在线看| 国产美女精品视频免费播放软件| 97影院理论片在线播放| 久久久精品视频免费观看| 一级在线免费视频| 亚洲综合激情另类小说区| 亚洲天堂手机版| 中文字幕欧美国产| 99re视频精品| 久久久性生活视频| 欧美成人女星排行榜| 日韩精品一区二区三| 国产精品免费一区二区三区在线观看| 欧美中文字幕精品| 尤物视频在线免费观看| 精品亚洲va在线va天堂资源站| 成人黄色中文字幕| 妖精视频一区二区三区| 先锋影音男人av资源| 91香蕉国产在线观看| 久久人人97超碰精品888| 国产亚洲小视频| 性猛交娇小69hd| 国产美女免费无遮挡| 日韩亚洲在线| 欧美视频成人| 亚洲美女少妇无套啪啪呻吟| 国产av一区二区三区传媒| 国产美女自慰在线观看| 精品国产乱码久久久久软件| 精品国内一区二区三区免费视频| 午夜美女久久久久爽久久| 亚洲国产综合网| 亚洲精品久久久久久一区二区| 欧美性潮喷xxxxx免费视频看| 97久久超碰精品国产| 亚洲网站啪啪| 日本精品视频网站| 国产欧美日韩亚洲一区二区三区| 亚洲 小说区 图片区| 国产成人极品视频| 国产精品视频麻豆| 国产色一区二区| 人成福利视频在线观看| 涩涩视频免费观看| 精品国产一区探花在线观看| 日韩www视频| 成人情趣视频网站| 精品视频一二三区| 国产第100页| 91久久大香伊蕉在人线| 免费观看视频www| 欧美精品一区视频| 精品国内自产拍在线观看视频| 日本aⅴ免费视频一区二区三区| 色婷五月综激情亚洲综合| 老鸭窝av在线| 欧美日韩国产电影| 精品一区二区三区亚洲| 欧美变态tickling挠脚心| 国产三级国产精品| www.午夜精品| 九色porny丨入口在线| 久久国产精品色婷婷| 亚洲免费电影在线观看| 99精品视频精品精品视频| 欧美性生活大片免费观看网址| 一本一本久久a久久精品综合妖精| 亚洲第一黄色片| 久久久久久久久久久久久久久99| 巨大黑人极品videos精品| 亚洲欧洲一区二区在线观看| 亚洲人体大胆视频| 福利视频一区二区三区四区| 亚洲男人天堂2020|