unittest模組的使用

2021-10-23 02:37:02 字數 3751 閱讀 3014

1. 概述

unittest模組是python的標準庫,用於測試**。

通過編寫測試用例,核實一系列輸入都將得達到預期的結果。

2. 建立測試用例

基本框架:

import unittest

from

《源檔名》

import

《函式名》

# 從檔案中匯入函式

class

《測試類的名稱》

(unittest.testcase)

:'''測試從指定原始檔中匯入的函式'''

def《方法名稱》

(self)

:'''該函式能否正確地處理……'''

《用於儲存結果的變數》

=《函式名》

(實參1

, 實參2……)

self.assertequal(

《用於儲存結果的變數》

,《預期的結果》

)unittest.main(

)

該類中的所有方法都應該以「test_開頭」進行命名,在測試時,所有以「test_」開頭的方法都將自動執行

assertequal是unittest類的斷言方法

unittest 模組中的斷言方法

方法用途

assertequal(a, b)

核實a == b

assertnotequal(a, b)

核實a != b

asserttrue(x)

核實x為true

assertfalse(x)

核實x為false

assertin(item, list)

核實item在list中

assertnotin(item, list)

核實item不在list中

方法setup()

unittest.testcase類包含方法setup(),讓我們只需建立這些物件一次,並在每個測試方法中使用他們。

(chapter 11 11.2.4 page197)

3. 例項

name_function.py

def

get_formatted_name

(first, last)

:'''generate a neatly formatted full name.'''

full_name = first +

' '+ last

return full_name.title(

)

test_name_function.py

import unittest

from name_function import get_formatted_name

class

namestestcase

(unittest.testcase)

:'''測試name_function.py'''

deftest_first_last_name

(self)

:'''能否正確處理像janis joplin這樣的姓名'''

formatted_name = get_formatted_name(

'janis'

,'joplin'

) self.assertequal(formatted_name,

'janis joplin'

)unittest.main(

)

執行結果:

.--

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

ran 1 test in

0.002s

ok

第一行有乙個句點,表明有乙個測試通過了

接下來指出測試消耗的時間0.002s

最後ok表明該測試中所有單元測試都通過了

q:如果不能通過會是怎樣呢?

修改name_function.py

def

get_formatted_name

(first, middle, last)

:'''generate a neatly formatted full name.'''

full_name = first +

' '+ middle +

' '+ last

return full_name.title(

)

新增中間名middle

執行結果:

e

====

====

====

====

====

====

====

====

====

====

====

====

====

====

====

====

====

==error: test_first_last_name (__main__.namestestcase)

能否正確處理像janis joplin這樣的姓名--

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

traceback (most recent call last)

: file "e:/python/test_name_function.py"

, line 9

,in test_first_last_name

formatted_name = get_formatted_name(

'janis'

,'joplin'

)typeerror: get_formatted_name(

) missing 1 required positional argument:

'last'--

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

ran 1 test in

0.051s

failed (errors=

1)

第一行「e」指出測試用例中有乙個單元測試導致了錯誤

error指出具體的哪個方法導致了錯誤

traceback說明錯誤原因

failed指出整個測試用例都未通過,因為發生了乙個錯誤(errors=1)

測試用例未通過時,不要修改測試,而應修復導致測試不能通過的**

python中的unittest模組總結

unittest在python中可以用來做單元測試,也可以用來做介面測試,此知識點會根據使用的經驗不定期更新 1 首先要看什麼是斷言?斷言是程式設計術語,表示為一些布林表示式,程式設計師相信在程式中的某個特定點該表示式值為真,可以在任何時候啟用和禁用斷言驗證,因此可以在測試時啟用斷言而在部署時禁用斷...

unittest斷言的使用

1.assertequal arg1,arg2,msg txt driver.find element by xpath id menu div 1 ul li 1 a self.assertequal txt.text,u 車輛資訊查詢 匹配失敗 text獲取標籤文字內容 不等則failtxt d...

unittest斷言的使用

我們在執行測試用例時,怎麼來判斷這條用例是否通過呢?唯一的辦法就是拿實際結果和預期結果進行比較,如果一致用例就是通過的,否則用例就是失敗的。在python中這種比較的方法就叫做斷言,unittest框架提供了一系列的斷言方法。常用的斷言方法如下 還有其他方法用於執行更具體的檢查,如下 示例 已 as...