婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 基于Python的接口自動化unittest測試框架和ddt數據驅動詳解

基于Python的接口自動化unittest測試框架和ddt數據驅動詳解

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

引言

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

一、unittest測試框架

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

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

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

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

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

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

2.testcase----測試用例

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

3.testfixure----測試夾件

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

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

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

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

執行后,輸出如下:

在代碼中我們編寫了4個def用例方法,只執行了3個def,因為最后一個def不是test開頭。可以看到每執行一個def用例,setup()和teardown()都會執行一次,其中按照執行順序:test_1最先執行,test_A其后,test_a最后執行

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

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

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

 運行效果如下:

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

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

3.TestSuite----測試集

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

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

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

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

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

4.testrunner----測試運行

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

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

新建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)

 輸出結果如下:

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框架下提供的加載用例的諸多方法,我們就可以單個或者批量加載用例,后續可以將加載的用例集引入到HTMLTestRunner.py模塊生成可視化的測試報告

5.assert----測試斷言

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

二、ddt數據驅動

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

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

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()

 (2)使用@unpack對復雜數據結構,如元組、列表數據進行分解

代碼示例:

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("拆解的第一個參數:",testdata1)
  print("拆解的第二個參數:", testdata2)
  print("------------------")
 
if __name__ == '__main__':
  unittest.main()

 運行后輸出如下:

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

編輯一個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框架的結合就可以實現測試用例腳本編寫、測試執行控制以及測試數據的批量加載,從而完成不同接口測試用例的批量執行和覆蓋測試不同測試場景。

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

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

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

巨人網絡通訊聲明:本文標題《基于Python的接口自動化unittest測試框架和ddt數據驅動詳解》,本文關鍵詞  基于,Python,的,接口,自動化,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于Python的接口自動化unittest測試框架和ddt數據驅動詳解》相關的同類信息!
  • 本頁收集關于基于Python的接口自動化unittest測試框架和ddt數據驅動詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人精品免费看| 色悠久久久久综合欧美99| 久久久av毛片精品| 亚洲毛片av在线| 欧美精品久久久久久久多人混战| 高清成人在线观看| 国产高清无密码一区二区三区| 久久成人免费电影| 蜜桃视频在线观看一区二区| 日本欧美大码aⅴ在线播放| 亚洲一区二区三区四区在线| 亚洲丶国产丶欧美一区二区三区| 亚洲免费在线播放| 亚洲乱码中文字幕综合| 免费一级片91| 麻豆传媒一区二区三区| 美女视频黄 久久| 老司机精品视频导航| 国产成人免费在线| 91在线观看成人| 欧美一级艳片视频免费观看| 91精品免费在线观看| 欧美高清视频www夜色资源网| 一本一道波多野结衣一区二区| 欧美亚洲一区二区三区四区| 欧美日韩五月天| 国产视频911| 亚洲国产成人91porn| 国产真实乱偷精品视频免| 97久久精品人人爽人人爽蜜臀| 在线精品视频一区二区三四| 4438x成人网最大色成网站| 国产精品拍天天在线| 青草国产精品久久久久久| 国产精品88av| 日韩欧美国产系列| 亚洲另类一区二区| 国产成人精品在线看| 制服丝袜日韩国产| 亚洲国产精品一区二区www| 欧美日韩视频在线一区二区| 蜜臀a∨国产成人精品| 国产欧美精品一区二区色综合| 99久久国产综合精品色伊| 午夜视频在线观看一区| 精品免费99久久| 青青草97国产精品免费观看无弹窗版| 色吊一区二区三区| 丝袜美腿亚洲综合| 日韩亚洲欧美高清| 久久国产精品99久久人人澡| 日韩视频免费观看高清完整版在线观看| 亚洲二区在线视频| 正在播放一区二区| 国产一区二区三区在线观看精品| 欧美不卡激情三级在线观看| 国产乱码精品一区二区三区五月婷| 欧美丰满高潮xxxx喷水动漫| 亚洲女同一区二区| av激情亚洲男人天堂| 亚洲美女区一区| 91黄色免费网站| 日韩国产一二三区| 国产精品全国免费观看高清| 在线观看网站黄不卡| 久久精品国产久精国产| 日韩欧美国产一二三区| 欧美日韩亚洲综合在线| 国精产品一区一区三区mba视频| 国产精品视频麻豆| 日韩欧美国产综合在线一区二区三区| 狠狠色综合播放一区二区| 亚洲老妇xxxxxx| 国产精品乱人伦中文| 91啪亚洲精品| 精油按摩中文字幕久久| 亚洲码国产岛国毛片在线| 精品国产在天天线2019| 色偷偷一区二区三区| 成人蜜臀av电影| 不卡的av电影| 风流少妇一区二区| 精品国产免费一区二区三区香蕉| 欧美午夜片在线看| 色综合婷婷久久| 欧美三级韩国三级日本三斤| 欧美一级淫片007| 国产精品色噜噜| 欧美日韩一区二区三区免费看 | 在线看一区二区| 欧美性感一区二区三区| 欧美日韩精品久久久| 精品欧美一区二区三区精品久久| 欧美xxxxxxxx| 国产精品成人免费精品自在线观看| 中文字幕一区二区三区在线播放| 一区二区三区免费看视频| 日本欧美加勒比视频| 成人国产亚洲欧美成人综合网 | 免费成人美女在线观看| 精品国产伦一区二区三区免费| 久久国产福利国产秒拍| 一区二区三区影院| 91久久国产最好的精华液| 狠狠色丁香婷综合久久| 亚洲视频综合在线| 精品国精品国产尤物美女| 欧美伦理影视网| 色香蕉久久蜜桃| 国产一区二区伦理片| 亚洲国产一区二区三区| 亚洲欧美日韩国产手机在线 | 青青草国产精品97视觉盛宴| 精品久久久久久久久久久久久久久久久| 国产一区二区不卡| 久久不见久久见免费视频1| 亚洲精品v日韩精品| 亚洲视频一区二区在线观看| 久久久精品免费观看| 91影院在线观看| 精品一区二区三区免费观看| 欧美精品一区二区三区在线| 91久久免费观看| 91视频国产资源| 国产自产2019最新不卡| 91精品国产免费久久综合| 日本午夜精品视频在线观看 | 在线不卡一区二区| 日本不卡视频在线观看| 精品一区二区三区视频| 国产精品一区在线观看你懂的| 国产精品亚洲成人| 99视频国产精品| 欧洲日韩一区二区三区| 91精品黄色片免费大全| 久久久欧美精品sm网站| 日本少妇一区二区| 丝袜美腿亚洲一区二区图片| 日韩中文字幕区一区有砖一区| 天堂在线一区二区| 奇米色一区二区| 国产成人aaa| 91小视频在线| 色婷婷综合久久| 精品免费日韩av| 久久久精品一品道一区| 日韩一区在线看| 精品国产乱码久久久久久老虎| 精品视频在线免费看| 日韩一级片在线观看| 日韩精品综合一本久道在线视频| 久久综合av免费| 亚洲第一成年网| 国产精品一级二级三级| 欧美日韩一级二级| 国产日韩欧美不卡在线| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲成a人v欧美综合天堂下载 | 日韩精品一区二区三区中文不卡 | 日韩美女主播在线视频一区二区三区| 老司机精品视频在线| thepron国产精品| 91精品一区二区三区久久久久久| 日韩一区二区免费高清| 亚洲视频资源在线| 紧缚奴在线一区二区三区| 91亚洲午夜精品久久久久久| 精品福利一区二区三区免费视频| 亚洲精品视频在线| 99久久99久久久精品齐齐| 欧美午夜精品一区二区蜜桃| 久久久综合网站| 精品一区二区三区香蕉蜜桃| 欧美日韩一级片在线观看| 中文字幕欧美区| 国产乱码精品1区2区3区| 亚洲成年人影院| 成人18视频在线播放| 五月开心婷婷久久| 韩国一区二区三区| 久久久亚洲精品石原莉奈| 免费观看久久久4p| 欧美一区二区三区日韩| 亚洲免费av在线| 一本一道久久a久久精品| 久久久久久久性| 国产伦精一区二区三区| 久久久99免费| 91色在线porny| 亚洲欧洲韩国日本视频| www.av精品| 亚洲精选一二三| 欧美日韩免费在线视频| 一级精品视频在线观看宜春院 | 一区二区三区四区在线| 免费成人在线播放| 久久久久久亚洲综合| 久久久91精品国产一区二区精品| 国产拍欧美日韩视频二区| 亚洲精品欧美激情|