Unittest單元測試框架

Unittest介紹、單元測試用例的組織、測試用例的執行、測試用例的跳過

Unittest介紹

為什么要學習單元測試框架

測試用例的組織與運行需要單元測試框架的參與,從而滿足不同測試場景的需要,單元測試框架提供了豐富的比較方法:實際結果與預期結果的對比==測試結果 單元測試框架提供了豐富的日志:給出測試用例失敗與通過的數目及執行失敗的原因

常見的單元測試框架有哪些

Doctest、unittest、pytest、nose等等

Java--》junit(testng)、C++--》 googleTest、c#--》nunit ? xunit

Unittest核心組件

Testcase:一個 testcase 就是一個測試用例。Setup(測試環境的準備)、run(測試執行)、teardown(測試環境的還原)。 Testsuite(集合或套件):多個測試用例的集合就是 suite,一個suite可以包含多個測試用例,也可以嵌套 suite。 TestLoader:用來加載 testcase到testsuite 中的。 TestTestRunner:用例執行測試用例(run 方法),測試結果會保存在 TestTestresult 中。 fixture:一個測試用例環境的搭建和銷毀。

Unittest單元測試用例的組織

構建單元測試用例 場景:以字符串替換舉例

構建測試套件(優化測試用例)

單元測試用例的增多,在各個測試代碼中會有很多相似的操作,考慮setUp(測試環境的準備)、tearDown(測試環境的還原)

組織多個測試用例(深度優化測試用例)

測試用例的繼續優化:所有的測試用例不需要都用單獨的類進行存放,該方式比較耗時,通過test開頭的函數來存放測試用例。

構建測試套件

多個測試用例的集合就是suite,一個suite可以包含多個測試用例,也可以嵌套suite。

執行部分測試用例

執行某測試類下的全部測試用例,unittest模塊中提供一個makesuite

?

?

多個測試類的控制

執行測試

首先將StringReplaceTestCase放在單獨的一個py文件中StringReplace.py 將注釋放在方法內,作為方法的說明。 執行部分測試用例,創建一個test_suite.py,用戶控制測試用例的執行 運行全部測試用例。

測試用例的跳過

修改StringReplace文件,理解skip、skipif、skipunless

Unittest框架總結

setUp()方法用于測試用例執行前的初始化工作。如測試用 例中需要訪問瀏覽器,可以在setUp中實例化瀏覽器驅動。 tearDown():tearDown()方法用于測試用例執行之后的善后工作、關 閉瀏覽器。

斷言方法:在執行測試用例的過程中,最終用例是否執行通過,是通 過判斷測試得到的實際結果和預期結果是否相等決定的。 assertEqual(a,b,[msg='測試失敗時打印的信息']):斷言a和b是否相等,相等則測試用例通 過。 assertNotEqual(a,b,[msg='測試失敗時打印的信息']):斷言a和b是否相等,不相等則測試 用例通過。 assertTrue(x,[msg='測試失敗時打印的信息']):斷言x是否True,是True則測試用例通過。

addTest(): 方法是將測試用例添加到測試套件中。?

run(): 方法是運行測試套件的測試用例,入參為suite測試套件。

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

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

相關文章

Viewport Meta 標記:讓網頁適應各種設備的魔法符號

在我們用手機或平板電腦瀏覽網頁時,你是否曾發現有些網頁能夠很好地適應屏幕,而有些卻需要左右滑動才能完整顯示內容?這就涉及到一個神奇的東西——Viewport Meta 標記。 最近本人在研究自適應的各自實現方法,比如media媒體查詢、…

6個免費設計素材庫,設計師都在用,趕緊收藏!

設計師應該都知道,在設計過程中找素材真的很費時間,有的時候全網翻遍都未必能找到自己想要的,以至于現在很多設計師都花錢去購買素材,你說要是拿去參賽或者商用還好,就拿平常設計來說你舍得花這個錢去買嗎,…

ubuntu-base 20.04防火墻配置方法

ubuntu-base 20.04防火墻配置方法 在ubuntu-base 20.04 上配置防火墻可以使用 UFW(Uncomplicated Firewall)工具。以下是一些基本的防火墻配置命令: 1. 檢查防火墻狀態: sudo ufw status 2. 啟用防火墻: sudo ufw…

numpy.resize(修改數據維度)

numpy.resize 函數用于調整數組的大小。它接受一個數組和一個新的形狀作為參數,并返回具有新形狀的新數組。如果新數組的大小大于原始數組的大小,resize 將重復原始數組的元素以填充新數組。如果新數組的大小小于原始數組的大小,則 resize 將…

亞馬遜云科技Amazon Bedrock,現推出更多模型選擇和全新強大功能

亞馬遜云科技在re:Invent 2023上宣布推出Amazon Bedrock更多模型選擇和強大功能,幫助客戶更輕松地構建和規模化針對其業務定制的生成式AI應用程序。 Amazon Bedrock是一項全面托管的服務,用戶可輕松訪問來自AI21 Labs、Anthropic、Cohere、Meta、Stabili…

未能正確利用原型繼承(js的問題)

考慮下面代碼: BaseObject function(name) {if (typeof name ! "undefined") {this.name name;} else {this.name default} }; 上面代碼比較簡單,就是提供了一個名字,就使用它,否則返回 default: var firstObj n…

網頁設計的靈感從哪來?試試這15個靈感網站

設計靈感網站是許多設計師必備的工具,因為它們提供了一個創造性的源泉,可以幫助設計師找到靈感和靈感,從而開發出驚人的設計。 推薦15個設計靈感網站,涵蓋了平面設計、網頁設計、UI設計等不同領域的設計。 即時設計資源廣場 即…

shell學習帖子積累

.bashrc與.bash_profile區別_bashprofile和bashrc-CSDN博客 帖子2: $0 - 腳本名 $1 - 命令參數1 $# - 幾個參數 $ - 參數分別是什么 $$ - 當前腳本PID $USER - 用戶 $HOSTNAME - 主機名 $LINENO - 行號 $RANDOM - 隨機數 $? - 返回函數結果 實例: abc.s…

Linux系統vim,gcc,g++工具使用及環境配置,動靜態庫的概念及使用

Linux系統vim,gcc,g工具使用及環境配置,動靜態庫的概念及使用 1. Linux編輯器-vim的使用1.1 vim的基本概念1.2vim的基本操作1.3vim正常模式命令集1.4vim末端模式命令集1.5簡單的vim配置 2.Linux編譯器-gcc/g的使用2.1 準備階段2.2gcc的使用2.…

了解 git rebase

了解 git rebase 大多數人習慣使用 git merge 將更改從功能分支合并到主分支,但還有其他方法。我們是否曾經遇到過 git rebase 這個術語并想知道它是什么?或者我們可能聽說過 rebase 和 merge ,但不確定何時使用哪個?不用擔心&am…

企業架構LB-服務器的負載均衡之Haproxy實現

企業架構LB-服務器的負載均衡之HAProxy實現 學習目標和內容 1、能夠通過HAProxy實現負載均衡 ###1、介紹 Introduction HAProxy, which stands for High Availability Proxy, is a popular opensource software TCP/HTTP LoadBalancer and proxying solution which can be ru…

力扣111. 二叉樹的最小深度

給定一個二叉樹,找出其最小深度。 最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。 說明:葉子節點是指沒有子節點的節點。 示例 1: 輸入:root [3,9,20,null,null,15,7] 輸出:2 示例 2: 輸入…

最大子段和問題

題目&#xff1a; 分治法求解思路&#xff1a; 代碼&#xff1a; #include<iostream> using namespace std;int maxSum(int arr[], int left, int right) {int sum 0;if (left right){if (arr[left] > 0){return arr[left];}else{return 0;}}else{int center (l…

AWS攻略——子網

文章目錄 分配子網給Public子網分配互聯網網關創建互聯網網關附加到VPC 給Public子網創建路由表關聯子網 打通Public子網和互聯網網關 創建Public子網下的EC2進行測試配置Private子網路由給Private子網創建路由表附加在Private子網 創建Private子網下的EC2進行測試創建實例在跳…

Java / Scala - Trie 樹簡介與應用實現

目錄 一.引言 二.Tire 樹簡介 1.樹 Tree 2.二叉搜索樹 Binary Search Tree 3.字典樹 Trie Tree 3.1 基本概念 3.2 額外信息 3.3 結點實現 3.4 查找與存儲 三.Trie 樹應用 1.應用場景 2.Java / Scala 實現 2.1 Pom 依賴 2.2 關鍵詞匹配 四.總結 一.引言 Trie 樹…

c++通訊錄操作系統

實現功能 1、添加聯系人 2、顯示聯系人 3、刪除聯系人 4、查找聯系人 5、修改聯系人 6、清空聯系人 0、退出通訊錄 //-封裝函數顯示該界面 如 void showmenu //-在main函數中調用封裝好的函數 #include<iostream> #include<string> #define max 1000 using n…

如何使用京東商品SKU API獲取商品的保修信息?

一、背景介紹 京東商品SKU API是京東開放平臺提供的一套API接口&#xff0c;用于獲取京東商城的商品SKU信息。保修信息是商品SKU信息中的重要組成部分&#xff0c;通過該API可以獲取到商品的保修政策、保修期限等詳細信息。本文將介紹如何使用京東商品SKU API獲取商品的保修信…

【ClickHouse】ClickHouse與MySQL之間實時同步數據(MySQL引擎),將MySQL數據實時同步到clickhouse

參考1:MySQL(通過該配置實現了實時同步) 參考2:experimental MaterializedMySQL 參考3:[experimental] MaterializedMySQL(包含設置 allow_experimental_database_materialized_mysql) MySQL引擎用于將遠程的MySQL服務器中的表映射到ClickHouse中&#xff0c;并允許您對表進行I…

item_get_app_pro-根據ID取商品詳情原數據接入參數和返回值說明

參數說明 pinduoduo.item_get_app_pro 公共參數 名稱類型必須描述keyString是調用key&#xff08;申請調用免費測試&#xff09;secretString是調用密鑰api_nameString是API接口名稱&#xff08;包括在請求地址中&#xff09;[item_search,item_get,item_search_shop等]cache…

JavaEE之多線程編程:1. 基礎篇

文章目錄 一、關于操作系統一、認識進程 process二、認識線程三、進程和線程的區別&#xff08;重點&#xff01;&#xff09;四、Java的線程和操作系統線程的關系五、第一個多線程編程 一、關于操作系統 【操作系統】 驅動程序&#xff1a; 如&#xff1a;我們知道JDBC的驅動程…