Python自動化測試框架:Unittest 斷言

🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快

斷言是編程中常用的一種驗證方法,也是測試代碼中最重要的部分,用于驗證某個條件是否為真,驗證測試結果與預期結果是否一致。

unittest 提供了方便的斷言方法,用于驗證測試結果是否符合預期,若驗證失敗,則會拋出 AssertionError 異常,并輸出指定的錯誤信息。本文將介紹 unittest 中常用的斷言方法以及使用場景。

斷言的類型

在 unittest 中,常用的斷言方法可以分為以下5類:相等斷言、包含斷言、布爾斷言、類型斷言、異常斷言。

1、相等斷言

相等斷言用于驗證兩個值是否相等。

  • assertEqual(a, b, msg=None):驗證 a 和 b 是否相等。

  • assertNotEqual(a, b, msg=None):驗證 a 和 b 是否不相等。

代碼實例:

import unittest
class TestEqual(unittest.TestCase):def test_equal(self):self.assertEqual(1 + 2, 3)

在上述代碼中,test_equal 方法使用 assertEqual 方法驗證 1 + 2 是否等于 3。

2、包含斷言

包含斷言用于驗證某個值是否包含在另一個值中。

  • assertIn(a, b, msg=None):驗證 a 是否包含在 b 中。

  • assertNotIn(a, b, msg=None):驗證 a 是否不包含在 b 中。

代碼實例:

import unittest
class TestIn(unittest.TestCase):def test_in(self):self.assertIn('e', 'hello')

在上述代碼中,test_in 方法使用 assertIn 方法驗證字母 'e' 是否包含在字符串 'hello' 中。

3、布爾斷言

布爾斷言用于驗證某個值是否為真或假。

  • assertTrue(x, msg=None):驗證?x?是否為真。

  • assertFalse(x, msg=None):驗證?x?是否為假。

代碼實例:

import unittest
class TestBoolean(unittest.TestCase):
def test_boolean(self):self.assertTrue(1 + 1 == 2)

在上述代碼中,`test_boolean` 方法使用 `assertTrue` 方法驗證 `1 + 1 == 2` 是否為真。

4、類型斷言

類型斷言用于驗證某個值的類型是否符合預期。

  • ?assertIsInstance(a, b, msg=None)`:驗證 `a` 是否是 `b` 類型的實例。

  • assertNotIsInstance(a, b, msg=None)`:驗證 `a` 是否不是 `b` 類型的實例

代碼實例:

import unittest
class TestType(unittest.TestCase):def test_type(self):self.assertIsInstance('hello', str)

上述代碼中,test_type 方法使用 assertIsInstance 方法驗證字符串 'hello' 是否是字符串類型。如果驗證失敗,則會拋出 AssertionError 異常,并輸出指定的錯誤信息。

5、異常斷言

異常斷言用于驗證某個操作是否會拋出異常。

  • assertRaises(exc, callable, *args, **kwds):

    驗證 callable(*args, **kwds) 是否會拋出 exc 類型的異常。

代碼實例:

import unittest
class TestException(unittest.TestCase):def test_exception(self):self.assertRaises(ZeroDivisionError, lambda: 1 / 0)

上述代碼中,test_exception 方法使用 assertRaises 方法驗證 lambda 函數 lambda: 1 / 0 是否會拋出 ZeroDivisionError 異常。

注意:在使用斷言方法時,可以通過?msg?參數來指定斷言失敗時的錯誤信息,以便于定位問題。

代碼實例:

import unittest
class TestEqual(unittest.TestCase):def test_equal(self):self.assertEqual(1 + 1, 3, '1 + 1 should equal to 3')

上述代碼中,使用 msg 參數來指定錯誤信息 '1 + 1 should equal to 3'。如果驗證失敗,則會輸出這個錯誤信息。

最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:

這些資料,對于做【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術行業,一定要提升技術功底。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92070.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92070.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92070.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

spring-ai-alibaba 學習(十八)——graph進階

內容概述 前一篇(spring-ai-alibaba 1.0.0.2 學習(十七)——初識graph-CSDN博客)初步介紹了graph: 概念:圖、邊、節點、狀態等,及其核心類和衍生類 使用流程: 1)定義…

音視頻學習(四十七):模數轉換

模數轉換(Analog-to-Digital Conversion,簡稱ADC)是將連續的模擬信號轉換為離散的數字信號的過程,是現代電子系統中的核心技術之一。模數轉換廣泛應用于通信、信號處理、傳感器數據采集、音頻處理、圖像處理等領域。 基本原理 模數…

8.高斯混合模型

高斯混合模型,簡稱GMM,對數據可以進行聚類或擬合,多用于傳統語音識別。他會將每個數據看做多個高斯分布混合生成的。對于無標簽的數據進行聚類,一般采用高斯混合模型處理。算法過程 1.首先進行初始猜測,假設有n個簇&am…

Calcite自定義擴展SQL案例詳細流程篇

文章目錄前言本章節源碼一、基于 Calcite 實現一個自定義 SQL 解析器1.1、認識Calcite解析器二、實戰案例2.1、快速構建一個可擴展sql語法的模板工程(當前暫無自定義擴展sql示例)步驟1:拉取calcite源碼,復制codegen代碼步驟2&…

【生活篇】Ubuntu22.04安裝網易云客戶端

前文啰嗦,直接跳轉 命令行匯總 網易云linux版早已停止維護,自己一直在使用web版本,今天想下載個音樂,結果需要客戶端。。。 安裝命令很簡單: wget https://d1.music.126.net/dmusic/netease-cloud-music_1.2.1_amd64…

FT8441S/FT8441A 5V非隔離方案電路原理圖(型號解析及管腳定義)

在當今電子設備日益普及的背景下,高效、穩定且低成本的電源解決方案成為了眾多工程師的追求目標。Fremont Micro Devices 推出的 FT8441S 和 FT8441A 正是這樣兩款滿足需求的芯片,它們憑借高精度恒壓輸出、快速啟動以及完善的保護功能,成為了…

Python 面向對象編程核心知識點深度解析

面向對象編程(OOP)是 Python 中最重要的編程范式之一,它將數據和操作數據的方法封裝在一起,提高了代碼的復用性和可維護性。本文將結合實際代碼示例,詳細講解 Python 面向對象編程的核心概念和常用技巧。一、類與對象的…

Java學習第一百部分——Kafka

目錄 一、前言提要 二、核心價值 三、核心架構 四、基本用途 五、優勢總結 六、相關技術 七、詳細用途 八、高級用法 九、最佳實踐 十、總結定位 一、前言提要 Apache Kafka 是一個強大的開源分布式流處理平臺,專為處理高吞吐量、低延遲的實時數據流而設計…

[spring-cloud: 負載均衡]-源碼分析

獲取服務列表 ServiceInstanceListSupplier ServiceInstanceListSupplier 接口是一個提供 ServiceInstance 列表的供應者&#xff0c;返回一個響應式流 Flux<List<ServiceInstance>>&#xff0c;用于服務發現。 public interface ServiceInstanceListSupplier e…

Oracle 在線重定義

Oracle 在線重定義&#xff08;Online Redefinition&#xff09; 是一種功能&#xff0c;通過DBMS_REDEFINITION 包提供&#xff0c;允許DBA在不需要停止或顯著影響數據庫正常操作的情況下&#xff0c;對數據庫表進行結構化修改。可以實現的功能將表移動到其它表空間增加、修改…

Web 開發 12

1 網址里的 “搜索請求” 結構 這張圖是在教你怎么看懂 網址里的 “搜索請求” 結構&#xff0c;特別基礎但超重要&#xff0c;對你學前端幫別人做搜索功能超有用&#xff0c;用大白話拆成 3 步講&#xff1a; 1. 先看「協議&#xff08;Protocol&#xff09;」 HTTPS 就是瀏…

網絡安全 | 如何構建一個有效的企業安全響應團隊

網絡安全 | 如何構建一個有效的企業安全響應團隊 一、前言 二、團隊組建的基礎要素 2.1 人員選拔 2.2 角色定位 三、團隊應具備的核心能力 3.1 技術專長 3.2 應急處置能力 3.3 溝通協作能力 四、團隊的運作機制 4.1 威脅監測與預警流程 4.2 事件響應流程 4.3 事后復盤與改進機制…

HTTP、WebSocket、TCP、Kafka等通訊渠道對比詳解

在當今互聯的數字世界中&#xff0c;通信渠道是系統、應用程序和設備之間數據交換的支柱。從傳統的HTTP和TCP協議到專為特定場景設計的Kafka和MQTT等平臺&#xff0c;這些通信方式滿足了從實時消息傳遞到大規模數據流處理的多樣化需求。本文將深入探討主要的通信協議和平臺。一…

臭氧、顆粒物和霧霾天氣過程的大氣污染物計算 CAMx模型

隨著我國經濟快速發展&#xff0c;我國面臨著日益嚴重的大氣污染問題。大氣污染是工農業生產、生活、交通、城市化等方面人為活動的綜合結果&#xff0c;同時氣象因素是控制大氣污染的關鍵自然因素。大氣污染問題既是局部、當地的&#xff0c;也是區域的&#xff0c;甚至是全球…

數據結構(13)堆

目錄 1、堆的概念與結構 2、堆的實現 2.1 向上調整算法&#xff08;堆的插入&#xff09; 2.2 向下調整算法&#xff08;堆的刪除&#xff09; 2.3 完整代碼 3、堆的應用 3.1 堆排序 3.2 Top-K問題 1、堆的概念與結構 堆是一種特殊的二叉樹&#xff0c;根結點最大的堆稱…

C++模板知識點3『std::initializer_list初始化時逗號表達式的執行順序』

std::initializer_list初始化時逗號表達式的執行順序 在使用Qt Creator4.12.2&#xff0c;Qt5.12.9 MinGW開發的過程中發現了一個奇怪的現象&#xff0c;std::initializer_list<int>在初始化構造時的執行順序反了&#xff0c;經過一番測試發現&#xff0c;其執行順序可正…

【Unity3D】Shader圓形弧度裁剪

片元著色器&#xff1a; float3 _Center float3(0, 0, 0); float3 modelPos i.modelPos;// float angle atan2(modelPos.y - _Center.y, modelPos.x - _Center.x); // 計算角度&#xff0c;范圍-π到π float angle atan2(modelPos.y - _Center.y, modelPos.z - _Center.z)…

curl發送文件bodyParser無法獲取請求體的問題分析

問題及現象 開發過程使用curlPUT方式發送少量數據, 后端使用NodeJSexpress框架bodyParser,但測試發現無法獲取到請求體內容,現象表現為req.body 為空對象 {} 代碼如下: const bodyParser require(body-parser); router.use(/api/1, bodyParser.raw({limit: 10mb, type: */*}))…

Vue3 學習教程,從入門到精通,Vue 3 內置屬性語法知識點及案例代碼(25)

Vue 3 內置屬性語法知識點及案例代碼 Vue 3 提供了豐富的內置屬性&#xff0c;幫助開發者高效地構建用戶界面。以下將詳細介紹 Vue 3 的主要內置屬性&#xff0c;并結合詳細的案例代碼進行說明。每個案例代碼都包含詳細的注釋&#xff0c;幫助初學者更好地理解其用法。1. data …

機器學習基石:深入解析線性回歸

線性回歸是機器學習中最基礎、最核心的算法之一&#xff0c;它為我們理解更復雜的模型奠定了基礎。本文將帶你全面解析線性回歸的方方面面。1. 什么是回歸&#xff1f; 回歸分析用于預測連續型數值。它研究自變量&#xff08;特征&#xff09;與因變量&#xff08;目標&#xf…