Skip to Content
Python 技術手冊 第三版
book

Python 技術手冊 第三版

by lex Martelli, Anna Martelli Ravenscroft, Steve Holden
January 2018
Intermediate to advanced content levelIntermediate to advanced
856 pages
17h 17m
Chinese
GoTop Information, Inc.
Content preview from Python 技術手冊 第三版
520
|
16 章 測試、除錯和最佳化
即使是在這種簡單的情況中,一個次要面向就能顯示出,對於
單元測試而言,
unittest
doctest
更強大且有彈性。在方法
testArgumentMustBeString
中,我們傳入一對例外類別作為引數給
assertRaises
,表示我們接受其中任一種的例外。
test_mod.py
因此能接
mod.py
的多種實作。它接受範例 16-1 中的實作,這個實作會在它的
引數上試著呼叫方法
split
,因此會在用來呼叫它的引數不是字串時提出
AttributeError
。然而,它也接受一個不同的假設性實作,一個會在以型別
錯誤的引數被呼叫時提出
TypeError
的實作。以
doctest
編寫這種功能性是
可能的,但那會很怪異而且不容易懂,而
unittest
卻可以使它簡單而且自
然。
這種彈性對於真實世界的單元測試來說是很關鍵的,它們在某種程度上算
是它們模組的可執行規格(executable specifications)。你可以,悲觀地,
把這種測試彈性的需求視為你正在測試的程式碼之介面定義不良的一種跡
象。然而,最好是把這個介面定義方式看作是要給實作者一點實用的彈
性:在情況
X
(在此範例中是傳入了型別無效的引數給函式
reverseWords
下,兩種事情(提出
AttributeError
TypeError
)中任一種的發生都是被
允許的。
因此,具有兩種中任一種行為的實作都算是正確的,而實作者可以基於效
能或清晰度之類的考量在它們之間進行挑選。藉由把單元測試視為它們模 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

測試驅動開發|使用 Python

測試驅動開發|使用 Python

Harry J.W. Percival
Linux 内核观测技术BPF

Linux 内核观测技术BPF

David Calavera, Lorenzo Fontana

Publisher Resources

ISBN: 9789864766819