新聞中心
很多編程小白不太理解單元測試,為什么要進(jìn)行單元測試呢?很簡單,主要是提高代碼的正確,同時(shí)確保重構(gòu)不出錯(cuò)。接下來我們一起學(xué)習(xí)怎么用python做單元測試吧。

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括開魯網(wǎng)站建設(shè)、開魯網(wǎng)站制作、開魯網(wǎng)頁制作以及開魯網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,開魯網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到開魯省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
python內(nèi)置了一個(gè)unittest,但是寫起來稍微繁瑣,比如都要寫一個(gè)TestCase類,還得用 assertEqual, assertNotEqual等斷言方法。 而使用pytest運(yùn)行測試統(tǒng)一用assert語句就行,兼容unittest,目前很多知名開源項(xiàng)目如PyPy,Sentry也都在用。關(guān)于pytest的使用可以參考其官方文檔,雖然有很多高級特性,但是掌握其中一小部分基本就夠用了。
下面是py.test的基本用法,以常見的兩種測試類型(驗(yàn)證返回值和拋出異常)為例:
def add(a, b):
"""return a + b
Args:
a (int): int
b (int): int
Returns:
a + b
Raises:
AssertionError: if a or b is not integer
"""
assert all([isinstance(a, int), isinstance(b, int)])
return a + b
def test_add():
assert add(1, 2) == 3
assert isinstance(add(1, 2) , int)
with pytest.raises(Exception): # test exception
add('1', 2)
基本使用就是這么簡單。真實(shí)場景下遠(yuǎn)遠(yuǎn)比這個(gè)復(fù)雜,甚至有時(shí)候構(gòu)造測試的時(shí)間比寫業(yè)務(wù)邏輯的時(shí)間還要長。但是再復(fù)雜的邏輯也是一點(diǎn)點(diǎn)功能堆積,如果可以確保每一部分都正確,整體上是不會(huì)出錯(cuò)的。單元測試同時(shí)也提醒我們,函數(shù)完成的功能盡可能單一,這樣才利于測試。
下面幾個(gè)是我常用的pytest命令:
py.test test_mod.py # run tests in module py.test somepath # run all tests below somepath py.test -q test_file_name.py # quite輸出 py.test -s test_file_name.py # -s參數(shù)可以打印測試代碼中的輸出,默認(rèn)不打印,print沒結(jié)果 py.test test_mod.py::test_func # only run tests that match the "node ID", py.test test_mod.py::TestClass::test_method # run a single method in
以上就是使用python做單元測試的方法。更多Python學(xué)習(xí)推薦:PyThon學(xué)習(xí)網(wǎng)教學(xué)中心。
本文標(biāo)題:創(chuàng)新互聯(lián)Python教程:如何使用python做單元測試?
本文路徑:http://www.dlmjj.cn/article/ccdesis.html


咨詢
建站咨詢
