python中的測試框架
一、測試常用規(guī)則
- 一個(gè)測試單元必須關(guān)注一個(gè)很小的功能函數(shù),證明它是正確的;
- 每個(gè)測試單元必須是完全獨(dú)立的,必須能單獨(dú)運(yùn)行。這樣意味著每一個(gè)測試方法必須重新加載數(shù)據(jù),執(zhí)行完畢后做一些清理工作。通常通過setUp()和setDown()方法處理;
- 編寫執(zhí)行快速的測試代碼。在某些情況下,測試需要加載復(fù)雜的數(shù)據(jù)結(jié)構(gòu),而且每次執(zhí)行的時(shí)候都要重新加載,這個(gè)時(shí)候測試執(zhí)行會很慢。因此,在這種情況下,可以將這種測試放置一個(gè)后臺的任務(wù)中。
- 在編寫代碼前執(zhí)行完整的測試,而且在編寫代碼后再重新執(zhí)行一次。這樣能保證你后來編寫的代碼不會破壞任何事情;
- 在提交代碼前執(zhí)行完整的測試;
- 如果在開發(fā)期間被打斷了工作,寫一個(gè)打斷的單元測試,關(guān)于你下一步將要開發(fā)的。當(dāng)你回來工作時(shí),你能知道上一步開發(fā)到的指針;
- 單元測試函數(shù)使用長的而且具有描述性的名字。在正式執(zhí)行代碼中,可能使用square()或sqr()取名,但是在測試函數(shù)中,你必須取像test_square_of_number_2()、test_square_negativer_number()這些名字,這些名字描述更加清楚;
- 測試代碼必須具有可讀性;
- 單元測試對新進(jìn)的開發(fā)人員來說是工作指南。
二、python常用的測試框架
1. unittest
unittest是Python內(nèi)置的標(biāo)準(zhǔn)類庫
unittest 和 JUnit類似,可以說是python的標(biāo)準(zhǔn)單元測試框架,所以有時(shí)也被人稱為 PyUnit。它使用起來和xUnit 家族其他成員類似。 用的人也比較多。兼容 python2 以及python3 。
2、unittest2
unittest2 可以說是一個(gè)針對 unittest測試框架新特性的補(bǔ)丁。它很大程度上和unittest都類似。然后還添加了一些unittest沒有的方法。
3、pytest
py.test是unittest的替代工具。
盡管它是一個(gè)功能豐富、靈活的測試框架,但是它的語法很簡單。創(chuàng)建一個(gè)單元測試就像編寫一個(gè)模塊一樣。相比unittest,實(shí)現(xiàn)相同的測試功能,py.test做的事情更少。
pytest 直接可以通過 @pytest.mark.parametrize 進(jìn)行參數(shù)化,而unittest 則需要借助DDT。
4、nose
Nose是對unittest的擴(kuò)展,使得python的測試更加簡單。nose自動(dòng)發(fā)現(xiàn)測試代碼并執(zhí)行,nose提供了大量的插件,比如測試輸出的xUnitcompatible,覆蓋報(bào)表等等。
基于Python的測試驅(qū)動(dòng)開發(fā)實(shí)戰(zhàn) 也有nose的用法: http://python.jobbole.com/81305/
還有一個(gè)特定就是,nose可以采用 @with_setup() 來定義方法的setup和teardown。
5、doctest
doctest模塊會搜索那些看起來像交互式會話的 Python 代碼片段,然后嘗試執(zhí)行并驗(yàn)證結(jié)果。
6、tox
最大的特色,是自動(dòng)最測試環(huán)境的管理以及使用多個(gè)解析器配置進(jìn)行測試。
tox的詳細(xì)文檔: http://testrun.org/tox/latest/
7、mock
unittest.mock是用來測試python的庫。
在python3.3版本以后,這個(gè)是一個(gè)標(biāo)準(zhǔn)庫。 對老版本來說,使用pip install mock 進(jìn)行安裝。
mock的精髓在于,你可以使用模擬的對象來替代你的系統(tǒng)的一部分,然后驗(yàn)證后續(xù)的執(zhí)行是否正確。
mock的詳細(xì)文檔:http://www.voidspace.org.uk/python/mock/
以上就是python中的測試框架的詳細(xì)內(nèi)容,更多關(guān)于python 測試框架的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python獲取運(yùn)行目錄與當(dāng)前腳本目錄的方法
這篇文章主要介紹了Python獲取運(yùn)行目錄與當(dāng)前腳本目錄的方法,涉及Python目錄操作與系統(tǒng)相關(guān)變量的獲取技巧,需要的朋友可以參考下2015-06-06
Python OpenCV實(shí)現(xiàn)邊緣檢測
這篇文章主要為大家詳細(xì)介紹了Python OpenCV實(shí)現(xiàn)邊緣檢測,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
python實(shí)現(xiàn)的人臉識別打卡系統(tǒng)
這篇文章主要介紹了python實(shí)現(xiàn)的人臉識別打卡系統(tǒng),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-05-05
Python實(shí)現(xiàn)動(dòng)態(tài)添加類的屬性或成員函數(shù)的解決方法
這篇文章主要介紹了Python實(shí)現(xiàn)動(dòng)態(tài)添加類的屬性或成員函數(shù)的解決方法,在類似插件開發(fā)的時(shí)候會比較有用,需要的朋友可以參考下2014-07-07
pytorch中permute()函數(shù)用法補(bǔ)充說明(矩陣維度變化過程)
這篇文章主要給大家介紹了關(guān)于pytorch中permute()函數(shù)用法補(bǔ)充說明的相關(guān)資料,本文詳細(xì)說明了permute函數(shù)里維度變化的詳細(xì)過程,需要的朋友可以參考下2022-04-04
Django實(shí)現(xiàn)微信小程序支付的示例代碼
這篇文章主要介紹了Django實(shí)現(xiàn)微信小程序支付的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Tensorflow中使用tfrecord方式讀取數(shù)據(jù)的方法
這篇文章主要介紹了Tensorflow中使用tfrecord方式讀取數(shù)據(jù)的方法,適用于數(shù)據(jù)較多時(shí),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
OpenCV特征提取與檢測之Shi-Tomasi角點(diǎn)檢測器
在角點(diǎn)檢測的世界里哈瑞斯無疑是最重要的方法之一,但Shi-Tomasi作為改進(jìn)的算法也有很大應(yīng)用場景,尤其是動(dòng)態(tài)跟蹤用的還比較多,這篇文章主要給大家介紹了關(guān)于OpenCV特征提取與檢測之Shi-Tomasi角點(diǎn)檢測器的相關(guān)資料,需要的朋友可以參考下2021-08-08

