unittest核心要素

1 TestCase

一個TestCase的實例就是一個測試用例。什么是測試用例呢?就是一個完整的測試流程,

包括測試環境的準備(setUp),執行測試代碼(run),以及測試后環境的還原(tearDown)。單元

測試(unit test)的本質也就在這里,一個測試用例是一個完整的測試單元,通過運行這個測試單元,可以對某一個問題進行驗證。

2 TestSuite

而多個測試用例集合在一起就是TestSuite,而且TestSuite也可以嵌套TestSuite。TestLoader是用來加載測試用例到TestSuite中的。

3 TextTestRunner

TextTestRunner是用來執行測試用例的,其中的run()會執行TestSuite/TestCase中的run(result)方法。測試的結果會保存到TextTestResult實例中,包括運行了多少測試用例,成功了多少,失敗了多少等信息。

4 Fixture

而對一個測試用例環境的搭建和銷毀,是一個fixture。

案例:定義一個calculate類,然后用unittest進行測試;

#!/usr/bin/python3  
class Math:
  def __init__(self,a,b):
    self.a = int(a)
    self.b = int(b)

def add(self):
    return self.a + self.b

測試代碼:
#!/usr/bin/python3  
from calculator import Math
import unittest

class TestMath(unittest.TestCase):
  def setUp(self):
    print('test start')
def test_add(self):
    j = Math(5,10)
    #self.assertEqual(j.add(),15)
    self.assertEqual(j.add(),12)
def tearDown(self):
    print('test end')

if __name__ == '__main__':
  suite = unittest.TestSuite()
  suite.addTest(TestMath('test_add'))

runner = unittest.TextTestRunner()
  runner.run(suite)

執行結果;

Testing started at 16:39 ... C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\python.exe "D:\PyCharm Community Edition 2017.3.3\helpers\pycharm\_jb_unittest_runner.py" --path E:/Selenium/unittest/test_Math.py Launching unittests with arguments python -m unittest E:/Selenium/unittest/test_Math.py in E:\Selenium\unittest test start test end

 

Ran 1 test in 0.008s

 

FAILED (failures=1)

 

12 != 15

 

Expected :15 Actual?? :12 ?<Click to see difference>

 

Traceback (most recent call last): ? File "D:\PyCharm Community Edition 2017.3.3\helpers\pycharm\teamcity\diff_tools.py", line 30, in _patched_equals ??? old(self, first, second, msg) ? File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 829, in assertEqual ??? assertion_func(first, second, msg=msg) ? File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 822, in _baseAssertEqual ??? raise self.failureException(msg) AssertionError: 15 != 12

 

During handling of the above exception, another exception occurred:

 

Traceback (most recent call last): ? File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 59, in testPartExecutor ??? yield ? File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 605, in run ??? testMethod() ? File "E:\Selenium\unittest\test_Math.py", line 13, in test_add ??? self.assertEqual(j.add(),12)

 

Process finished with exit code 1

因為12 !=15,所以報錯。

 
 

?

轉載于:https://www.cnblogs.com/holly-j/p/8448512.html

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

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

相關文章

iOS內存區域部分內容

目前參考這里&#xff1a; https://www.zhihu.com/question/263823072/answer/273452932 以后整理相關的代碼問題。 更多參考資料&#xff1a; https://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap 堆棧&#xff1a;https://baike.baidu.com/ite…

php 啟動ffmpeg,安裝php擴展 ffmpeg-php

首先先下載擴展包擴展下載地址: http://nchc.dl.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2進入 ffmpeg-php目錄 進行編譯擴展/usr/local/php/bin/phpize./configure --with-php-config/usr/local/php/bin/php-configmake 出錯報錯情況make: …

armeabi和armeabi-v7a的區別

armeabi默認選項&#xff0c; 支持基于 ARM* v5TE 的設備 支持軟浮點運算&#xff08;不支持硬件輔助的浮點計算&#xff09; 支持所有 ARM* 設備 armeabi-v7a 支持基于 ARM* v7 的設備 支持硬件 FPU 指令 支持硬件浮點運算 不同手機由于cpu的不同&#xff0c;使用不同的驅動…

淺析Numpy.genfromtxt及File I/O講解

Python 并沒有提供數組功能&#xff0c;雖然列表 (list) 可以完成基本的數組功能&#xff0c;但它并不是真正的數組&#xff0c;而且在數據量較大時&#xff0c;使用列表的速度就會慢的讓人難受。為此&#xff0c;Numpy 提供了真正的數組功能&#xff0c;以及對數據快速處理的函…

麻雀雖小,五臟俱全:分析CVS活動情況的小工具(有源碼供學習)

最近開發團隊發布的版本質量很成問題&#xff0c;追究起來有很多原因&#xff0c;其中之一是CVS的使用不合理&#xff0c; 于是想做個一小工具&#xff0c;分析CVS上每天的活動&#xff0c;以便掌握團隊成員對CVS的使用情況。 也許有現成的開源項目可以完成這項任務&#xff…

php如果實現日歷的制作,教大家制作簡單的php日歷

最近的一個項目中&#xff0c;需要將數據用日歷方式顯示&#xff0c;網上有很多的JS插件&#xff0c;后面為了自己能有更大的控制權&#xff0c;決定自己制作一個日歷顯示。如下圖所示&#xff1a;一、計算數據1、new一個Calendar類2、初始化兩個下拉框中的數據&#xff0c;年份…

Spark之 使用SparkSql操作mysql和DataFrame的Scala實現

通過讀取文件轉換成DataFrame數據寫入到mysql中 package com.zy.sparksqlimport java.util.Propertiesimport org.apache.spark.SparkContext import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, Row, SparkSession} import org.apache.spark.sql.types…

web服務器之iis,apache,tomcat三者之間的比較

IIS-Apache-Tomcat的區別 IIS與Tomcat的區別 IIS是微軟公司的Web服務器。主要支持ASP語言環境. Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技術的標準實現&#xff0c;是基于Apache許可證下開發的SJP語言環境容器,嚴格得說不能算是一個WEB服務器,而是Apache服務適配器。 …

iOS CAGradientLayer顏色漸變

Gradient&#xff1a;本身就是梯度的意思&#xff0c;所以在這里就是作為漸變色來理解 CAGradientLayer用于處理漸變色的層結構CAGradientLayer的漸變色可以做隱式動畫大部分情況下&#xff0c;CAGradientLayer時和CAShapeLayer配合使用,CAShapeLayer這里就不介紹了CAGradientL…

編程要養成的好習慣

1.- DRY: Don’t repeat yourself. DRY 是一個最簡單的法則&#xff0c;也是最容易被理解的。但它也可能是最難被應用的&#xff08;因為要做到這樣&#xff0c;我們需要在泛型設計上做相當的努力&#xff0c;這并不是一件容易的事&#xff09;。它意味著&#xff0c;當我們在…

flink整合java,Flink使用SideOutPut替換Split實現分流

基于apache flink的流處理實時模型44元包郵(需用券)去購買 >以前的數據分析項目(版本1.4.2)&#xff0c;對從Kafka讀取的原始數據流&#xff0c;調用split接口實現分流.新項目決定使用Flink 1.7.2&#xff0c;使用split接口進行分流的時候&#xff0c;發現接口被標記為depra…

虛機中訪問外網;NAT中的POSTROUTING是怎么搞的?

看下docker中是怎么配置的網絡 在虛機中訪問外網&#xff1a;設定了qemu&#xff0c;在主機上添加路由&#xff1a;sudo iptables -t nat -I POSTROUTING -s 192.168.1.110 -j SNAT --to-source 192.168.0.108 設置了這句話就可以訪問外網了。 設置了兩個虛擬機&#xff1a; ta…

Fragment結合ViewPager之懶加載

什么是懶加載&#xff1f;為什么要用懶加載&#xff1f;### 1、什么是懶加載 懶加載就是當ViewPager和Fragment結合在一起使用時&#xff0c;Fragment呈現在用戶面前時才加載數據&#xff0c;當其從未被呈現在用戶面前時&#xff0c;不會執行加載數據的代碼。這就是我所理解的懶…

WCF和webservice的區別

微軟論壇的斑竹回答如下&#xff1a; 腦內&#xff1a;果然是高大上啊 1.WebService&#xff1a;嚴格來說是行業標準&#xff0c;不是技術&#xff0c;使用XML擴展標記語言來表示數據&#xff08;這個是夸語言和平臺的關鍵&#xff09;。微 軟的Web服務實現稱為ASP.NET Web Ser…

職場不得不明白的十大定律

帕金森定律 美國著名歷史學家諾斯古德?帕金森通過長期調查研究&#xff0c;寫了一本名叫《帕金森定律》的書&#xff0c;他在書中闡述了機構人員膨脹的原因及后果&#xff1a;一個不稱職的官員&#xff0c;可能有三條出路。第一是申請退職&#xff0c;把位子讓給能干的人&am…

php控制器教程,laravel基礎教程 -- 控制器

HTTP 控制器簡介控制器允許你將相應的路由業務邏輯封裝在控制器類中進行有效的管理&#xff0c;這樣你不必將所有的路由邏輯集中到routes.php文件中&#xff0c;導致代碼的臃腫與難以維護。所有的控制器類都被存儲在app/Http/Controllers目錄中.基本控制器一個基本的控制器應該…

org.apache.jasper.JasperException: Unable to compile class for JSP:

報錯信息&#xff1a; org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 1 in the generated java file The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class filesSt…

i++和++i

關于自增自減運算&#xff0c;很多書籍沒有把問題講清楚,在C語言里是這樣的&#xff1a; 1.后置運算&#xff1a;k表示先運算&#xff0c;后自加。 意思是遇到k了&#xff0c;我先把當前的k的值拿來參加運算&#xff0c;后面再去管它的自加。 那么&#xff0c;“后面”后到什么…

什么樣的項目經歷會讓面試官眼前一亮

很多同學都問過我類似的問題&#xff1a; 咱們《C語言也能干大事》中講的自己動手寫windows優化大師、自己動手寫計算器等東西只是寫著玩的小玩具而已&#xff0c;這些能用來以后找工作時寫到簡歷中的作品嗎&#xff1f;看別人的簡歷寫的“圖書管理系統”、“教務選課系統”多有…

matlab采樣頻譜,Matlab對采樣數據進行頻譜分析

使用Matlab對采樣數據進行頻譜分析1、采樣數據導入Matlab采樣數據的導入至少有三種方法。第一就是手動將數據整理成Matlab支持的格式&#xff0c;這種方法僅適用于數據量比較小的采樣。第二種方法是使用Matlab的可視化交互操作&#xff0c;具體操作步驟為&#xff1a;File --&g…