出處:https://www.cnblogs.com/yoyoketang/p/9356693.html
前言:
python鄙視鏈:pytest 鄙視 > unittest 鄙視 > robotframework 鄙視 > 記流水賬 鄙視 > "hello world"小白
所以,讓我們一起學習pytest吧。
pytest簡介:
pytest是python的一種單元測試框架,與python自帶的unittest測試框架類似,但是比unittest框架使用起來更簡潔,效率更高。根據pytest的官方網站介紹,它具有如下特點:
- 非常容易上手,入門簡單,文檔豐富,文檔中有很多實例可以參考
- 能夠支持簡單的單元測試和復雜的功能測試
- 支持參數化
- 執行測試過程中可以將某些測試跳過(skip),或者對某些預期失敗的case標記成失敗
- 支持重復執行(rerun)失敗的case
- 支持運行由nose, unittest編寫的測試case
- 可生成html報告
- 方便的和持續集成工具jenkins集成
- 可支持執行部分用例
- 具有很多第三方插件,並且可以自定義擴展
一、pytest安裝:
1. pip install -U pytest
2. pip show pytest查看安裝版本
3. 也可以pytest -version查看安裝的版本
二、快速入手
----運行第一個簡單的函數
ok,如上環境安裝成功了。下面通過具體的案例來入手吧。我們先編寫一個簡單的函數,通過pytest執行或者pytest -q 腳本名,指定腳本來執行。
從上面的截圖可以看出,第一個執行斷言失敗,第二個執行斷言成功。
----運行多個函數
在一個包中,或者說一個模塊的文件中,它是有多個文件的,比如一個包中,pytest它是執行多個以test開頭的模塊腳本,我們先來看這種情況,在一個包中定義兩個模塊腳本,分別是test_first.py和test_second.py,如下圖:
----運行類中的函數
通過執行pytest可以執行模塊中的函數或者類中的方法,那么我們就來實現執行類中的測試函數,如下圖:
-------踩坑了。在之后的學習中,發現test_class.py這個腳本中的類函數無法使用setup_class和teardown_class。原因是以上的代碼其實是unittest的腳本,搞混了。下面更改一個pytest調用類函數的腳本。
三、總結
通過以上的三個練習,我們大致了解pytest的用例規則了吧。
1. 測試腳本名以test_開頭(或以_test結尾也可以)
2. 測試腳本中若是執行函數,以test_開頭
3. 測試腳本中若是執行一個類中的函數,測試類以Test開頭,並且不能帶有init方法
4. 斷言使用assert
5. 執行文件下所有的測試腳本,命令為pytest【cd到對應文件下執行】 或者 pytest 文件名/
6. 執行文件下指定的測試腳本,命令為pytest -q 指定測試腳本名稱【cd到對應文件下執行】 或者 pytest 文件名/腳本名
敲黑板:
pytest -s 腳本名 用例執行詳細情況
pytest -x 腳本名 遇到錯誤時停止測試
pytest --maxfail= num 當用例錯誤個數達到指定數量時,停止測試
pytest -h 查看pytest幫助
ok啦。。