新聞中心
在python中,單元測試是用來對一個模塊、一個函數(shù)或者一個類來進(jìn)行正確性檢驗的測試工作。
為撫順等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及撫順網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、撫順網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
單元測試
通常是測試一小塊代碼的功能,比如一個函數(shù),類的一個方法。
單元測試通常是開發(fā)人員做的一種測試,通常是測試函數(shù),方法這種級別的代碼塊的。單元測試大都是 設(shè)計出不同的調(diào)用參數(shù)來調(diào)用函數(shù),來看 函數(shù) 的輸出是否符合預(yù)期。當(dāng)然如果你的代碼寫的不好的話,單元測試也會比較麻煩。比如一個功能模塊沒有內(nèi)聚到函數(shù)中,而是分散在代碼文件里面。那樣,就不容易用一個函數(shù)調(diào)用對這些功能進(jìn)行測試。
使用pytest進(jìn)行python進(jìn)行單元測試
python內(nèi)置了一個unittest,但是寫起來稍微繁瑣,比如都要寫一個TestCase類,還得用 assertEqual, assertNotEqual等斷言方法。 而使用pytest運行測試統(tǒng)一用assert語句就行,兼容unittest,目前很多知名開源項目如PyPy,Sentry也都在用。關(guān)于pytest的使用可以參考其官方文檔,雖然有很多高級特性,但是掌握其中一小部分基本就夠用了。
下面是py.test的基本用法,以常見的兩種測試類型(驗證返回值和拋出異常)為例:
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)上面是示例,真實場景下遠(yuǎn)遠(yuǎn)比這個復(fù)雜,甚至有時候構(gòu)造測試的時間比寫業(yè)務(wù)邏輯的時間還要長。但是再復(fù)雜的邏輯也是一點點功能堆積,如果可以確保每一部分都正確,整體上是不會出錯的。單元測試同時也提醒我們,函數(shù)完成的功能盡可能單一,這樣才利于測試。
下面幾個是我常用的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入門教程(黑馬程序員)
網(wǎng)站欄目:創(chuàng)新互聯(lián)Python教程:在python中單元測試是什么
文章網(wǎng)址:http://fisionsoft.com.cn/article/dhgoide.html


咨詢
建站咨詢

