Unittest框架/DDT數據驅動


介紹前,思考以下問題

  • 測試數據如何自動化清除(運行前和運行后)
  • 多個測試用例,如何組織在一起執行
  • 多個測試用例的結果,如何展示在一份報告上

01:什么是Unittest

是python自帶的單元測試框架(不需要安裝),主要適用於單元測試,可以對多個測試用例進行管理和封裝

Unittest也叫pyunit,它提供了很多類和方法來處理各種測試工作

單元測試-用一部分代碼測試另一部分代碼

02:四大功能組成

(一)測試用例----testcase 

    • 測試用例必須在類中
    • 測試用例所在的類,必須繼承Unittest.TestCase
    • 測試用例的方法名稱必須以test開頭
    • 測試用例的執行順序,按照Ascill碼順序(0~9,A~Z,a~z)
    • 利用父類TestCase的assertXXXX方法來斷言
    • 用@unittest.skip(reason)裝飾來跳過測試用例

(二)測試固件----testfixture

    • 也叫測試夾件,主要工作是【初始化和善后】
    • 測試固件分為兩種,一種是類級別的,一種是方法級別的
    • 類級別的測試固件,所有測試用例執行之前與之后運行一次
    • 方法級別的測試固件,每個測試用例執行之前與之后都運行一次

1.示例一代碼(方法級別):

運行結果(鼠標頂格運行 ):

2.示例二代碼(類級別):

運行結果:

3.斷言assert

斷言失敗的話,用例2之后的測試用例不執行

由此得出Unittest缺點--不能批量執行測試用例

改造Unittest自己的assert:self.assertEqual

報錯后可繼續執行下面的用例,且打印到測試報告中

4.跳過某個測試用例 

使用@unittest.skip(reason)裝飾

(三)測試套件----testsuite

    • 是用來組織測試用例的
    • 如:

方法一:用例逐個添加到suite

import unittest
# 1構建測試套件test_suite
# 1-1 方法一:逐個添加到suite
suit = unittest.TestSuite()
suit.addTest(UnittestDemo('test_001'))
suit.addTest(UnittestDemo('test_002'))

方法二:用例放入列表中,再添加到suite

suite = unittest.TestSuite()
list=[類名1("方法名1"),類名2("方法名2")]
suite.addTests(list)

例:
list=[UnittestDemo('test_001'),UnittestDemo('test_002')]
suite.addTests(list)

方法三:通過TestLoader類的discover 方法來

suite = unittest.defaultTestLoader.discover('用例所在的模塊', pattern="*通配*.py")

discover(start_dir,pattern='test*.py',top_level_dir=None)

-case_dir:這個是待執行用例的目錄。

-pattern:這個是匹配腳本名稱的規則,test*.py 意思是匹配 test 開頭的所有腳本。

-top_level_dir:這個是頂層目錄的名稱,一般默認等於 None 就行了。

(四)測試運行器----testrunner

  • 是用來執行測試用例的
  • 第一種輸出方法
runner=unittest.TextTestRunner() #實例化TestRunner類
runner.run(suite)#執行用例

03: HTMLTestRunner--輸出報告

ClassicHTMLTestRunner下載解壓

放在此下目錄,整個項目可通用

導入:

from ClassicHTML.TestRuner  import HTML.TestRunner

  • 第二種輸出方法,使用HTMLTestRunner
runner = HTML.TestRunner(tester = '測試報告人','title'='測試報告',
                         description='接口測試報告'.stream = '文件路徑',verbosity=2#詳細描述)
runner.run(suite)

04:DDT數據驅動

解決問題:如何解決批量運行問題

ddt官方文檔地址:https://pypi.org/project/ddt/

安裝:

pip install ddt

​導入:

from ddt import ddt,data,unpack
  • ddt.ddt:裝飾類,也就是繼承TestCase的類。
  • ddt.data:裝飾測試方法,參數是一系列的值。
  • ddt.unpack:傳遞的是復雜的數據結構時使用,比如使用列表或者元組,添加unpack后,ddt會自動把元組或者列表對應到多個參數上

代碼中加入:

@ddt #類上面加上ddt
class UnittestDemo(unittest.TestCase):
#測試用例
@data(放參數)
def test_005(self,data):

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM