1. pytest簡介
pytest是python的一種單元測試框架,與python自帶的unittest測試框架類似,但是比unittest框架使用起來更簡潔,效率更高。根據pytest的官方網站介紹,它具有如下特點:
- 非常容易上手,入門簡單,文檔豐富,文檔中有很多實例可以參考
- 能夠支持簡單的單元測試和復雜的功能測試
- 支持參數化
- 執行測試過程中可以將某些測試跳過(skip),或者對某些預期失敗的case標記成失敗
- 支持重復執行(rerun)失敗的case
- 支持運行由nose, unittest編寫的測試case
- 可生成html報告
- 方便的和持續集成工具jenkins集成
- 可支持執行部分用例
- 具有很多第三方插件,并且可以自定義擴展
2. 安裝pytest
?pytest是python語言的一個測試的第三方的庫,那么我們首先需要-安裝它。
2.1 安裝方法
因為pytest是python語言的一個測試的第三方的庫,所以安裝方法和第三方類庫一樣通過命令,命令如下:
pip install -U pytest
?
2.2 查看是否安裝成功
出現如下紅色圈起的部分,會簡單點英文的,都知道說明安裝成功
?
2.3 查看安裝版本
2.3.1pip show?pytest查看安裝的版本
pip show pytest
?
2.3.2pytest --version查看安裝的版本
pytest --version
?
3. 實踐一下
1.新建一個test.py文件,(文件命名以test_*
開頭或者*_test
結尾)
3.1 代碼實現:
?
3.2 參考代碼:
# coding=utf-8
# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行
# 1.導入模塊# content of test_bjhg_sample.py
def func(x):return x +1def test_answer():assert func(3)==5
3.3 運行結果:
3.3.1 第一種運行代碼方法
在terminal中輸入pytest(或者輸入py.test也可以),
運行代碼后,控制臺打印如下圖的結果
?
3.3.1 第二種運行代碼方法
打開test.py所在的文件夾,cmd窗口輸入:pytest(或者輸入py.test也可以),運行代碼后,控制臺打印如下圖的結果
?
3.pytest運行規則:**查找當前目錄及其子目錄下以test_*.py或*_test.py文件,找到文件后,在文件中找到以test開頭函數并執行。**
4. 執行測試類
1.前面是寫的一個test開頭的測試函數,當用例用多個的時候,寫函數就不太合適了。這時可以把多個測試用例,寫到一個測試類里。
4.1 代碼實現:
?
4.2 參考代碼:
# coding=utf-8
# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行
# 1.導入模塊# content of test_class.py
class TestClass:def test_one(self):x = "this"assert "h" in xdef test_two(self):x = "hello"assert hasattr(x, "check")
4.3 運行結果:
運行代碼后,控制臺打印如下圖的結果
?
2.打開cmd,cd到test_class.py的文件目錄,如果只想運行這個文件,加上-q參數,-q參數用來指定執行的文件,不指定就執行該文件夾下所有的用例。pytest會找到符合規則(test_.py和_test.py)所有測試,因此它發現兩個test_前綴功能。 如果只想運行其中一個,可以指定傳遞文件名test_class.py來運行模塊:
備注: -q, --quiet decrease verbosity( 顯示簡單結果)
py.test -q test_class.py
第一次測試通過,第二次測試失敗。 您可以在斷言中輕松查看失敗的原因。
5. 使用規則
測試文件以test_開頭(以_test結尾也可以)
測試類以Test開頭,并且不能帶有?__init__?方法
測試函數以test_開頭
斷言使用assert
?
?