細說unittest單元測試框架

2021-01-12 騰訊網

一、單元測試框架說明

單元測試是指在編程中,針對程序模塊的最小單元(類中的方法)進行正確性檢驗的測試工作。python+selenium自動化測試中通常使用unittest或者pytest作為單元測試框架。而java+selenium自動化測試中通常使用junit或者testng作為單元測試框架。

二、unittest框架的4個重要概念

(1) test fixture(測試固件):一個測試固件代表一個或多個測試執行前的準備工作和測試結束後的清理工作,例如:創建資料庫連接、關閉資料庫連接、啟動服務進程、測試環境的清理等。

(2) test suite(測試套件):一個測試套件是一組測試用例的集合(也可以是一組測試套件的集合)。它的作用是將測試用例集合到一起一次性執行集合中所有的測試用例。

(3) test case(測試用例):一個測試用例是一個完整的測試流程,是最小的測試單元,通常會繼承unittest.TestCase類。

(4) test runner(測試運行器):一個測試運行器執行設定的測試用例並將測試結果反饋給用戶兩部分功能組成。

三、unittest框架中的特殊方法以及特殊方法執行順序

(1)自動化中要求所有的測試用例都繼承unittest.TestCase基類。TestCase基類中定義的幾個特殊的方法如下:

setUp() 每個測試用例運行前執行,主要作用是測用例前的初始化工作。

tearDown() 每個測試用例運行後執行,主要作用是測試用例後的清理工作。

setUpClass() 所有測試用例運行前運行,必須使用@classmethod裝飾器裝飾,在setUp()方法前執行,整個測試過程只執行一次,主要作用是單元測試前的準備工作。

tearDownClass() 所有測試用例運行後運行,必須使用@classmethod裝飾器裝飾,在tearDown()方法後執行,整個測試過程只執行一次,主要作用是單元測試後的清理工作。

(2) 執行順序如下:

setUpClass()

#測試用例一

setUp()

test_01()

tearDown()

#測試用例二

setUp()

test_02()

tearDown()

tearDownClass()

四、測試用例的命名

最簡單的測試用例方法命令只需要覆蓋runTest()方法即可。而更可取的是測試用例以"test"開頭命名。

五、unittest加載並執行測試用例方法

在unittest單元測試框架中,提供兩種單元測試加載執行測試用例的方法:

(1)直接通過unittest.main()方法加載並執行當前py文件中的測試用例。這是一種最簡單的加載方法,所有的測試方法執行順序都是按照方法名字符串所表示的ASCII碼升序排序(數字與字母的順序為:0-9,A-Z,a-z)。如:

(2)將所有的測試用例添加到測試套件集合中,然後一次性加載所有的測試對象。此方法經測試執行順序是按照測試用例的加載順序執行,但是特別要注意執行方式。如果是點擊右鍵的方式運行那麼總是以unittest方式執行(這種方式執行是以ASCII升序執行),而想要從main方法執行,則需要在pycharm的右上角修改Pycharm的運行方法。並按運行按鈕從main方法運行。(這種方式執行是按照測試用例加載順序執行)

測試用例添加到測試套件的方式:

注意:以上兩種方式都可以執行測試套件。

#其中:TestManage是類名,test_add是用例名,verbosity參數說明如下:

#verbosity參數可以控制輸出的錯誤報告的詳細程度,只有3個取值:

#

#1(default): 默認值,顯示執行的用例的總數和全局的執行結果,並對每個用例的執行結果(成功T或失敗F)有個標註。

#>=2(verbose): 顯示執行的用例的總數和全局的執行結果,並輸出每個用例的詳細的執行結果。

執行後測試結果說明:

.:一個點表示一個測試用例執行成功。

F:一個F表示一個測試用例執行失敗。

E:一個E表示測試用例中本身有異常。

六、按照特定順序執行測試用例

通過把測試用例按順序加載到測試套件中執行。

通過修改函數名的方式來讓測試用例按特定順序執行。如:

def test1_add(self):

def test2_delete(self):

def test3_update(self):

def test4_select(self):

注意:從後期自動化項目批量執行多個py文件的所有測試用例的角度出發第一種方式太過於繁瑣,建議使用第二種方式。

七、忽略測試用例

在批量執行測試用例時,有時會遇到某些測試用例不需要執行,但是又想保留測試代碼。除了可以注釋掉代碼外還可以使用unittest框架提供的更簡便的註解方法來忽略那些暫時不需要執行的測試用例。忽略測試用例分為無條件忽略和有條件忽略。

另外還有一個:@expected failure #代表如果test失敗了不計入失敗的case數目

八、unittest單元測試框架中常見的斷言

assertEqual(a, b) a == b 最常用

assertNotEqual(a,b) a != b

assertTrue(x) x is True 最常用

assertFalse(x) x is False

assertIs(a, b) a is b

assertIsNot(a, b) a is not b

assertIsNone(x) x is None

assertIsNotNone(x) x is not None

assertIn(a, b) a in b 最常用

assertNotIn(a, b) a not in b

assertIsInstance(a,b) isinstance(a, b)

assertNotIsInstance(a,b) not isinstance(a, b)

assertGreater(a,b) a > b

assertGreaterEqual(a,b) a >= b

assertLess(a, b) a

assertLessEqual(a,b) a

其中assertEqual(a,b),asserTrue(),assertIn為常用斷言方法。

assertEqual(a,b)用於判斷兩個字符串是否相等。

assertTrue(x)用於斷言一個字符串是否在頁面資源。

assertIn(a,b)用於判斷一個jsp或php頁面在當前頁面地址中。

相關焦點

  • Python unittest單元測試框架的使用
    二、unittest框架用Python搭建自動化測試框架,需要組織用例以及測試執行,大部分推薦的是unittest。現在用的也是這個,隨著了解,也有其他的框架,有時間再多去學習,保持持續學習哦~附上官方文檔地址:連結描述https://docs.python.org/2.7/library/unittest.html#unittest是Python自帶的單元測試框,可以用來作自動化測試框架的用例組織執行框架。
  • Python unittest單元測試框架的使用
    二、unittest框架用Python搭建自動化測試框架,需要組織用例以及測試執行,大部分推薦的是unittest。現在用的也是這個,隨著了解,也有其他的框架,有時間再多去學習,保持持續學習哦~附上官方文檔地址:連結描述https://docs.python.org/2.7/library/unittest.html#unittest是Python自帶的單元測試框,可以用來作自動化測試框架的用例組織執行框架。
  • 軟體測試學習教程:單元測試之UnitTest測試框架
    單元測試的概念單元測試(unit testing),是指對軟體中的最小可測試單元進行檢查和驗證。對於單元測試中單元的含義,要根據實際情況去判定其具體含義。一個單元可能是功能模塊、類、方法(函數)等。單元測試工具不同的程式語言都有比較成熟的單元測試框架,語法規則有些差別,其核心思想都是相通的。
  • 一篇文章向你解釋什麼是Unittest單元測試框架(上)
    軟體測試一般按階段劃分為:單元測試,集成測試,系統測試。單元測試(unit testing)是指對軟體中的最小可測試單元進行檢查和驗證。單元測試中單元的含義,單元就是人為規定的最小的被測功能模塊,如C語言中單元指一個函數,Java裡單元指一個類,圖形化的軟體中可以指一個窗口或一個菜單等。在實際項目中,單元測試往往由開發人員完成。
  • Python 測試框架unittest和pytest的優劣
    一、UnittestUnittest是Python標準庫中自帶的單元測試框架,Unittest有時候也被稱為PyUnit,就像JUnit是Java語言的標準單元測試框架一樣,Unittest則是Python語言的標準單元測試框架。
  • Python單元測試框架-UnitTest以及測試報告
    在開始使用UnitTest執行單元測試之前我們先了解幾個概念:test case:測試用例,可以通過創建unitest.TestCase類的子類創建一個測試用例。test suite:測試套件,是測試用例、測試套件或者兩者的集合,用來將有關聯的測試項打包。test runner:負責執行測試並將結果展示給用戶,可以展示圖形或文字形式(unittest.TextTestRunner)的結果,或者返回一個錯誤碼標識測試用例的執行結果。
  • Python接口自動化之unittest單元測試
    按照階段來分,一般就是單元測試,集成測試,系統測試,驗收測試。1.單元測試之後,才是集成測試,單個的功能模塊測試通過之後,才能把單個功能模塊集成起來做集成測試,為了從底層發現bug,減少合成後出現的問題。
  • Python單元測試——深入理解unittest
    單元測試的重要性就不多說了,可惡的是python中有太多的單元測試框架和工具,什麼unittest, testtools, subunit, coverage, testrepository, nose, mox, mock, fixtures, discover,再加上setuptools, distutils等等這些,先不說如何寫單元測試,光是怎麼運行單元測試就有
  • Python 測試框架之 Unittest & Pytest
    Unittest是Python自帶的一個單元測試框架Unittest
  • Python單元測試工具doctest和unittest詳細使用解析
    這篇文章主要介紹了Python單元測試工具doctest和unittest使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值
  • Python自動化之unittest框架
    在金字塔模型的測試理論體系中,單元測試是最底層的測試,而且是測試覆蓋最多的層面。在自動化所有的測試體系中,不管是單元測試,還是接口測試以及基於UI的自動化測試,都需要單元測試框架,在Python語言中,最常用的單元測試框架是unittest和pytest,今晚主要來介紹unittest單元測試框架,後期逐步的介紹pytest測試框架在自動化測試中的應用。
  • unittest測試框架
    unittest測試框架1、導入包from selenium
  • Python之UnitTest框架介紹
    UnitTest的介紹Python中相對比較流行的自動化測試框架UnitTest,早期主要時用於做單元測試,隨著自動化更新,能夠完善的結合Selenium/Appium/Requests等實現UI自動化與接口自動化。
  • 自動化測試基礎篇:Selenium unittest 簡介
    ,對於Python語言,同樣有類似的單元測試框架Unittest。今天就給大家結合實例介紹一下unittest,一起來學習吧。一、什麼是unittestunittest是Python單元測試框架,類似於JUnit框架。
  • python單元測試框架pytest的使用示例
    這篇文章主要介紹了python單元測試框架pytest的使用示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們來一起學習學習吧
  • unittest框架核心要素及應用
    1. unittest核心要素unittest介紹測試框架,不僅僅用於單元測試python自動的測試包用法和運行容器中的測試用例"""import unittest# 測試類,繼承於unittest.TestCaseclass MyTest(unittest.TestCase):def test_1(self):
  • 5分鐘測試:哪個Python熱門單元測試框架適合現在的你?
    對於我們測試來說,做自動化測試需要編寫測試用例,編寫測試用例就會使用到單元測試模塊,常見的Python單元測試模塊有UnitTest、Pytest、Nose等。但是聽說過最多的也就屬於Pytest和UnitTest了,安靜今天就通過這一篇文字簡單的介紹下Pytest和UnitTest的區別。說起單元測試,安靜立刻想到的就是UnitTest框架,為什麼呢?
  • Python中unittest用法實例
    裝飾器實現原理及代碼對python的unittest架構公共參數token提取方法詳解Python單元測試工具doctest和unittest詳細使用解析Python + Requests + Unittest接口自動化測試實例分析
  • 自動化測試基礎篇:Selenium 框架設計(POM)
    框架具有以下一些優點:1)代碼復用2)最大覆蓋率3)很低成本維護4)很少人工幹預5)簡單報告輸出2.常見的測試框架分類1)基於模塊的測試框架2)基於庫(Library)結構測試框架3)數據驅動測試框架,和QTP很像
  • python unittest使用基本過程
    前言unittest是python的標準的單元測試框架,能夠很好的和自動化測試相結合,並有獨立的測試報告框架。在selenium測試中,我們可以用來做webdriver的初始化等等testcase測試用例,unittest的最小單元。用以對指定輸入的返回結果進行檢測。在unittest中提供 了TestCase基類,用來創建新的測試用例類。