python+unittest框架第四天unittest之斷言(一)

来源:https://www.cnblogs.com/woshidaliua/archive/2019/08/21/11385560.html
-Advertisement-
Play Games

unittest中的測試斷言分兩天總結,hhh其實內容不多,就是懶~ 斷言的作用是什麼? 答:設置測試斷言以後,能幫助我們判斷測試用例執行結果。 我們先看下unittest支持的斷言有哪些: 對上面的斷言語法有個大概的瞭解後,我們使用一下看看代碼: 一: 註意:相等,必須是內容和類型都完全相等哦,比 ...


unittest中的測試斷言分兩天總結,hhh其實內容不多,就是懶~

斷言的作用是什麼?  答:設置測試斷言以後,能幫助我們判斷測試用例執行結果。

我們先看下unittest支持的斷言有哪些:

對上面的斷言語法有個大概的瞭解後,我們使用一下看看代碼:

一:

斷言 assertEqual(a,b)  它可以判斷兩個參數相等,比如我們把獲取到的百度首頁的title和我們寫的title做對比。
 1 '''
 2 標題  斷言 assertEqual()  它可以判斷兩個參數相等,比如我們把獲取到的百度首頁的title和我們寫的title做對比。
 3 '''
 4 import unittest
 5 from bokeyuan.bokeyuan_public import *
 6 
 7 class baidu_page(public_baidu):    #繼承了另一個.py模塊中的public_baidu類,這個類繼承了TestCase
 8     '''
 9     因為繼承了自己另一個.py模塊中的類public_baidu,所以不需要在寫setup和teardown兩個測試固件的方法。
10     '''
11     '''直接寫用例'''
12     def test_baidu_title(self):    #只要是用例,函數名字開頭必須是test_   不然不會被識別成用例的!!
13         print('獲取到的title是:',self.driver.title)  #我們列印獲取到的title內容
14         self.assertEqual(self.driver.title,'百度一下,你就知道')   #第二個參數是我們自己寫的需要校驗的內容哦
15 
16     @staticmethod      
17     def suite(self):
18         unittest.TestSuite(unittest.makeSuite(baidu_page))
19         return suite     #一定要返回結果給調用方
20 if __name__ == '__main__':
21     unittest.main(verbosity=2).run(baidu_page.suite())  #把baidu_page類中的案例,傳入到測試套件中suite(),suite()方法是被裝飾了的,所以不需要實例化可以直接類名調用

註意:相等,必須是內容和類型都完全相等哦,比如    str('1')  和 int(1)   這兩個1內容是一樣的,但是他們的數據類型可不是一樣的,所以不會是相等的哦!字元串和數據類型是兩個類型哦~!!!    相等的兩個含義你學會了嗎?

那麼assertNotEqual(a,b)  代表的是不相等,你可以舉一反三寫出小的案例嗎?   題目:判斷一下 3不等4  

不會的朋友可以留言,大家一起相互學習~~

二:assertTrue(x)  返回的是bool類型的數據,True大家都不陌生,真真為真,真假為假,假假為假~~

我們看個小案例,我判斷一下百度首頁的輸入框是可以輸入內容,如果可以編輯,那麼bool值肯定就是真(True)~~

備註:

so.is_enabled() 作用是檢查元素是否可以編輯 如文本框
 1 '''
 2 標題  斷言 assertTrue()  它返回的是Ture,也就是條件為真,就是通過了~~真真為真
 3 '''
 4 import unittest
 5 from bokeyuan.bokeyuan_public import *
 6 
 7 class baidu_page(public_baidu):    #繼承了另一個.py模塊中的public_baidu類,這個類繼承了TestCase
 8     '''
 9     因為繼承了自己另一個.py模塊中的類public_baidu,所以不需要在寫setup和teardown兩個測試固件的方法。
10     '''
11     '''直接寫用例'''
12     def test_baidu_ShuRuKuang(self):    #只要是用例,函數名字開頭必須是test_   不然不會被識別成用例的!!
13         '''驗證百度首頁的輸入框,可以輸入內容'''
14         so = self.driver.find_element_by_id('kw')
15         self.assertTrue(so.is_enabled())     #它 so.is_enabled() 作用是檢查元素是否可以編輯 如文本框
16 
17     @staticmethod
18     def suite(self):
19         unittest.TestSuite(unittest.makeSuite(baidu_page))
20         return suite     #一定要返回結果給調用方
21 if __name__ == '__main__':
22     unittest.main(verbosity=2).run(baidu_page.suite())  #把baidu_page類中的案例,傳入到測試套件中suite(),suite()方法是被裝飾了的,所以不需要實例化可以直接類名調用

可以看到案例是ok,表示通過,說明是可以編輯的,通過案例你會使用assertTrue(x) 了嗎?是不是認識了呢?

同樣的assertFalse()  代表假,你可以用它判斷一下   3等於4 嗎? 如果你不會寫  那麼留言哦~~大家一起學習

三、aeertIn(a,b)        代表  a是不是在b裡面,或者被b所包含。我們看下代碼示例:

 1 '''
 2 標題  斷言 assertIn(a,b)   代表a是不是被b所包含,a是不是在b裡面
 3 '''
 4 import unittest
 5 from bokeyuan.bokeyuan_public import *
 6 
 7 class baidu_page(public_baidu):    #繼承了另一個.py模塊中的public_baidu類,這個類繼承了TestCase
 8     '''
 9     因為繼承了自己另一個.py模塊中的類public_baidu,所以不需要在寫setup和teardown兩個測試固件的方法。
10     '''
11     '''直接寫用例'''
12     def test_baidu_ShuRuKuang(self):    #只要是用例,函數名字開頭必須是test_   不然不會被識別成用例的!!
13         '''驗證百度兩個字,在百度的title內容中包含'''
14         self.assertIn('百度',self.driver.title)
15 
16     @staticmethod
17     def suite(self):
18         unittest.TestSuite(unittest.makeSuite(baidu_page))
19         return suite     #一定要返回結果給調用方
20 if __name__ == '__main__':
21     unittest.main(verbosity=2).run(baidu_page.suite())  #把baidu_page類中的案例,傳入到測試套件中suite(),suite()方法是被裝飾了的,所以不需要實例化可以直接類名調用

同樣的方法,你能有可以用assertIsNot(a, b)  代表a不在b中包含。寫一個小案例嗎?題目: 字元串 ’b‘  不在 字元串 ’acc‘ 中包含

今天的內容就是這麼多了,其實常用的斷言(assert)方法就是這三種,其他的也會用到,但是不要貪,先學會這三種以及相反的三種,就是六種了~~棒~~~

不會的朋友,可以留言,大家一起學習~

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 代理(proxy)分為2種: 靜態代理 動態代理 動態代理常用的有jdk動態代理、cglib代理。 靜態代理 1、新建User介面 2、新建實現類UserImpl 3、新建代理類UserProxy,也實現User介面,對目標對象(的方法)進行增強 4、使用代理。新建測試類Test 靜態代理的特點 代 ...
  • 一、前言 在Java中,工具類定義了一組公共方法,這篇文章將介紹Java中使用最頻繁及最通用的Java工具類。以下工具類、方法按使用流行度排名,參考數據來源於Github上隨機選取的5萬個開源項目源碼。 二、org.apache.commons.io.IOUtils closeQuietly:關閉一 ...
  • 一、定時任務實現的幾種方式: Timer 這是java自帶的java.util.Timer類,這個類允許你調度一個java.util.TimerTask任務。使用這種方式可以讓你的程式按照某一個頻度執行,但不能在指定時間運行。一般用的較少。 ScheduledExecutorService 也jdk ...
  • 使用Python採集SQL Server資料庫伺服器磁碟信息時,遇到了一個錯誤“CONFIG statement cannot be used inside a user transaction.DB-Lib error message 20018, severity 16”,那麼為什麼遇到這個錯誤... ...
  • 摘要: 大家都知道註解是實現了java.lang.annotation.Annotation介面,眼見為實,耳聽為虛,有時候眼見也不一定是真實的。 元註解: 元註解 一般用於指定某個註解生命周期以及作用目標等信息。正如源碼的註釋一樣,如果自定義的註解沒有添加元註解就和平常的註釋沒有多大的區別,有了元 ...
  • - 1.win10安裝JDK8 - 2.數據類型與變數 - 3.運算符 - 4.程式流程式控制制 - 5.數組 ...
  • 昨天花了一下午寫了一個小爬蟲,用來分析自己的粉絲數據。這個真好玩!今天幫了群里好多大V也爬了他們的數據。運行速度:每分鐘5千粉絲以上。暫時先寫成這樣,這兩天要準備補考,沒有時間繼續玩這個。 下次要改進的地方:1、多線程 2、scrapy 3、深度數據 4、分散式爬蟲 希望實現的功能: + 1、地區、 ...
  • 綁定事件: 解綁事件: 點擊事件:click 滑鼠:mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave 對於input框:focus、blur、input input能夠實時檢測 textarea,input:te ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...