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...