Python單元測(cè)試與測(cè)試用例簡(jiǎn)析
本文實(shí)例講述了Python單元測(cè)試與測(cè)試用例。分享給大家供大家參考,具體如下:
單元測(cè)試與測(cè)試用例
簡(jiǎn)介
測(cè)試用例是一組單元測(cè)試,這些單元測(cè)試一起核實(shí)函數(shù)在各種情形下的行為都符合要求
要為函數(shù)編寫(xiě)測(cè)試用例,可先導(dǎo)入模塊 unittest 以及要測(cè)試的函數(shù),再創(chuàng)建一個(gè)繼承unittest.TestCase 的類(lèi),并編寫(xiě)一系列方法對(duì)函數(shù)行為的不同方面進(jìn)行測(cè)試
創(chuàng)建實(shí)例(對(duì)比接收到的名和姓是否符合要求)
1.先創(chuàng)建個(gè)name_function.py的文件(文件名稱(chēng)可以另?。?,接收名和姓并返回整潔的全名
def get_formatted_name(first,last,middle=''): '''生成整潔的姓名''' if middle: full_name=first+' '+middle+' '+last else: full_name=first+' '+last return full_name.title()
2.再創(chuàng)建個(gè)test_name_function.py的文件,檢查name_function.py()在給定名和姓時(shí)能否正確地工作
import unittest from name_function import get_formatted_name class NamesTestCase(unittest.TestCase): """測(cè)試name_function.py""" def test_first_last_name(self): """能夠正確處理姓名么?""" formatted_name = get_formatted_name('liu','wei' ) self.assertEquals(formatted_name, 'Liu Wei') unittest.main()
上述代碼思路:
- 導(dǎo)入模塊
unittest
和要測(cè)試的函數(shù)get_formatted_name()
- 創(chuàng)建一個(gè)名為
NamesTestCase
的類(lèi)(類(lèi)的命名可任取,但最好讓它看起來(lái)與要測(cè)試的函數(shù)相關(guān),并包含字樣Test),用于包含一系列針對(duì)get_formatted_name()
的單元測(cè)試。這個(gè)類(lèi)必須繼承unittest.TestCase
,這樣Python才知道如何運(yùn)行你編寫(xiě)的測(cè)試 - NamesTestCase只包含一個(gè)方法,我將這個(gè)方法命名為
test_first_last_name()
,我們運(yùn)行test_name_function.py
時(shí),所有以test_打頭的方法都將自動(dòng)運(yùn)行。在這個(gè)示例中,使用了實(shí)參‘liu'和‘wei'調(diào)用get_formatted_name()
,并將結(jié)果存儲(chǔ)到變量formatted_name
中 assertEquals()
是unittest
類(lèi)最有用的功能之一:一個(gè)斷言方法。斷言方法用來(lái)核實(shí)得到的結(jié)果與期望的結(jié)果一致。self.assertEquals(formatted_name, 'Liu Wei')
的意思是:將formatted_name
的值同字符串 'Liu Wei'進(jìn)行比較- 代碼行
unittest.main()
讓Python運(yùn)行這個(gè)文件中的測(cè)試。
運(yùn)行結(jié)果如下:
----------------------------------------------------------------------
Ran 1 test in 0.000sOK
第1句的句點(diǎn)表明有一個(gè)測(cè)試通過(guò)。接下來(lái)的一行指出Python運(yùn)行了一個(gè)測(cè)試,消耗的時(shí)間不到0.001秒。最后的OK表明該測(cè)試用例中的所有單元測(cè)試都通過(guò)了。
關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python函數(shù)使用技巧總結(jié)》、《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python編程新標(biāo)準(zhǔn)學(xué)會(huì)十項(xiàng)好習(xí)慣提升編碼質(zhì)量
這篇文章主要為大家介紹了Python編程新標(biāo)準(zhǔn)學(xué)會(huì)十項(xiàng)好習(xí)慣提升編碼質(zhì)量,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01關(guān)于Keras模型可視化教程及關(guān)鍵問(wèn)題的解決
今天小編就為大家分享一篇關(guān)于Keras模型可視化教程及關(guān)鍵問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01python實(shí)現(xiàn)定時(shí)任務(wù)的八種方式總結(jié)
在日常工作中,我們常常會(huì)用到需要周期性執(zhí)行的任務(wù),下面這篇文章主要給大家介紹了關(guān)于python實(shí)現(xiàn)定時(shí)任務(wù)的八種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01Python多進(jìn)程與服務(wù)器并發(fā)原理及用法實(shí)例分析
這篇文章主要介紹了Python多進(jìn)程與服務(wù)器并發(fā)原理及用法,深入淺出的介紹了進(jìn)程、并行、并發(fā)、同步、異步等相關(guān)概念與原理,并結(jié)合實(shí)例形式給出了Python多進(jìn)程編程相關(guān)操作技巧,需要的朋友可以參考下2018-08-08Python?Pipeline處理數(shù)據(jù)工作原理探究
如果你是一個(gè)Python開(kāi)發(fā)者,你可能聽(tīng)過(guò)"pipeline"這個(gè)術(shù)語(yǔ),但?pipeline?到底是什么,它又有什么用呢?在這篇文章中,我們將探討?Python?中的?pipeline?概念,它們是如何工作的,以及它們?nèi)绾螏椭憔帉?xiě)更清晰、更高效的代碼2024-01-01分享python機(jī)器學(xué)習(xí)中應(yīng)用所產(chǎn)生的聚類(lèi)數(shù)據(jù)集方法
本文根據(jù) 機(jī)器學(xué)習(xí)中常用的聚類(lèi)數(shù)據(jù)集生成方法 中的內(nèi)容進(jìn)行編輯實(shí)驗(yàn)和整理而得,有需要的朋友可以參考想,希望可以對(duì)大家在聚類(lèi)數(shù)據(jù)方面有所幫助2021-08-08Python中Matplotlib圖像添加標(biāo)簽的方法實(shí)現(xiàn)
本文主要介紹了Python中Matplotlib圖像添加標(biāo)簽的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04