前言
unittest是python的標準的單元測試框架,能夠很好的和自動化測試相結合,并有獨立的測試報告框架。
unittest提供了一系列類讓測試變得更加容易,下面我們看下unittest的主要構成部分
unittest-1.png
- test fixture
用于初始化、清理等動作。在selenium測試中,我們可以用來做webdriver的初始化等等
- testcase
測試用例,unittest的最小單元。用以對指定輸入的返回結果進行檢測。在unittest中提供 了TestCase基類,用來創建新的測試用例類。
- test suite
測試套件,一系列測試用例或測試套件的集合。在unittest中由TestSuite類實現。
- test runner
測試執行器,負責用例執行并生成測試報告,在unittest中提供了命令行模式和GUI模式來執行。
unittest使用過程
下面一步步的展示如何使用unittest來測試。
- 導入unitttest模塊
import unittest
- 定義一個被測試函數
def add(a, b):
return a + b
- 創建一個unittest.TestCase子類
class demoTest(unittest.TestCase):
pass
- 在demoTest新增一個測試方法:test_add_4_5, 測試方法名稱必須以==test==開始
class demoTest(unittest.TestCase):
def test_add_4_5(self):
pass
- 在新增的測試方法test_add_4_5中添加斷言驗證
class demoTest(unittest.TestCase):
def test_add_4_5(self):
self.assertEquals(add(4,5),9)
- 最后,在main函數中調用unittest的main方法啟動測試,最終整個代碼如下:
# _*_ coding:utf-8 _*_
__author__ = '苦葉子'
import unittest
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
# 被測函數
def add(a, b):
return a + b
# 測試用例
class demoTest(unittest.TestCase):
def test_add_4_5(self):
self.assertEquals(add(4,5),9)
# 主函數
if __name__ == '__main__':
unittest.main()
- 代碼保存至demoTest.py中,執行下屬命令
python demoTest.py
運行結果如下:
.
----------------------------------------
Run 1 testin 0.000s
OK
- 下表信息是在運行unittest是可能的輸出信息
序號 | 描述 |
---|---|
1 | OK 表示測試通過 |
2 | FAIL 表示測試不通過,控制臺輸出斷言異常信息 |
3 | ERROR 表示測試異常 |
unittest命令
unittest提供了豐富的命令選項來控制unittest測試,下面我們簡單的列舉如下:
使用方法
python -m unittest 選項
示例,查看幫助信息
python -m unittest -h
序號 | 選項 & 描述 |
---|---|
1 | -h, --help 顯示幫助信息 |
2 | -v, --verbose 查完整的測試結果輸出信息 |
3 | -q, --quiet 查看最小測試結果輸出信息 |
4 | -f, --failfast 在第一次遇到失敗時,停止測試 |
5 | -c, --catch 捕獲control-C并顯示結果 |
6 | -b, --buffer 將stdout, stderr信息輸出到buffer中 |
總結
本次主要就python unittest的基本使用進行了分享,非常的簡單,期望大家能掌握起基本原理,再此基礎上進一步擴展應用于實戰中。后續逐步分享unittest相關技術。