1. 程式人生 > 程式設計 >python中的測試框架

python中的測試框架

一、測試常用規則

  • 一個測試單元必須關注一個很小的功能函式,證明它是正確的;
  • 每個測試單元必須是完全獨立的,必須能單獨執行。這樣意味著每一個測試方法必須重新載入資料,執行完畢後做一些清理工作。通常通過setUp()和setDown()方法處理;
  • 編寫執行快速的測試程式碼。在某些情況下,測試需要載入複雜的資料結構,而且每次執行的時候都要重新載入,這個時候測試執行會很慢。因此,在這種情況下,可以將這種測試放置一個後臺的任務中。
  • 在編寫程式碼前執行完整的測試,而且在編寫程式碼後再重新執行一次。這樣能保證你後來編寫的程式碼不會破壞任何事情;
  • 在提交程式碼前執行完整的測試;
  • 如果在開發期間被打斷了工作,寫一個打斷的單元測試,關於你下一步將要開發的。當你回來工作時,你能知道上一步開發到的指標;
  • 單元測試函式使用長的而且具有描述性的名字。在正式執行程式碼中,可能使用square()或sqr()取名,但是在測試函式中,你必須取像test_square_of_number_2()、test_square_negativer_number()這些名字,這些名字描述更加清楚;
  • 測試程式碼必須具有可讀性;
  • 單元測試對新進的開發人員來說是工作指南。

二、python常用的測試框架

1. unittest

unittest是Python內建的標準類庫

unittest 和 JUnit類似,可以說是python的標準單元測試框架,所以有時也被人稱為 PyUnit。它使用起來和xUnit 家族其他成員類似。 用的人也比較多。相容 python2 以及python3 。

2、unittest2

unittest2 可以說是一個針對 unittest測試框架新特性的補丁。它很大程度上和unittest都類似。然後還添加了一些unittest沒有的方法。

3、pytest

py.test是unittest的替代工具。

儘管它是一個功能豐富、靈活的測試框架,但是它的語法很簡單。建立一個單元測試就像編寫一個模組一樣。相比unittest,實現相同的測試功能,py.test做的事情更少。
pytest 直接可以通過 @pytest.mark.parametrize 進行引數化,而unittest 則需要藉助DDT。

4、nose

Nose是對unittest的擴充套件,使得python的測試更加簡單。nose自動發現測試程式碼並執行,nose提供了大量的外掛,比如測試輸出的xUnitcompatible,覆蓋報表等等。

基於Python的測試驅動開發實戰 也有nose的用法: http://python.jobbole.com/81305/
還有一個特定就是,nose可以採用 @with_setup() 來定義方法的setup和teardown。

5、doctest

doctest模組會搜尋那些看起來像互動式會話的 Python 程式碼片段,然後嘗試執行並驗證結果。

6、tox

最大的特色,是自動最測試環境的管理以及使用多個解析器配置進行測試。

tox的詳細文件: http://testrun.org/tox/latest/

7、mock

unittest.mock是用來測試python的庫。

在python3.3版本以後,這個是一個標準庫。 對老版本來說,使用pip install mock 進行安裝。

mock的精髓在於,你可以使用模擬的物件來替代你的系統的一部分,然後驗證後續的執行是否正確。
mock的詳細文件:http://www.voidspace.org.uk/python/mock/

以上就是python中的測試框架的詳細內容,更多關於python 測試框架的資料請關注我們其它相關文章!