一、pytest介紹:基於unittest 之上的單元測試框架html
1.一、自動發現測試模塊和測試用例;python
unitest 須要添加用例,(泰斯特樓貸)加載器加載測試用例session
pytest 只須要一條代碼就能夠app
1.二、斷言使用 assert + 表達;框架
unitest 定義了全部的 斷言方式函數
pytest 只須要使用一個關鍵字 assert + 表達式 就能夠了,表達式爲真則斷言經過,表達式爲假則斷言失敗單元測試
1.三、pytest 能夠設置測試會話級、模塊級、類級、函數級的 fixtures;測試
1.四、有豐富的插件庫,目前在600個以上(框架庫插件地址:http://plugincompat.herokuapp.com/)url
二、pytest 收集測試用例規則(按照:目錄-文件-函數/類)spa
2.一、默認從當前目錄中搜集測試用例,即在那個目錄下運行pytest 命令,則從那個目錄當中搜索
2.二、搜索規則:進入目錄後,在按照搜索規則搜索用例
2.2.一、符合命名規則 test_*.py 或者 *_test.py 的文件
2.2.二、以 test_ 開頭的函數名
2.3.三、以 Test 開頭的測試類(沒有 _init_ 函數)當中,以 test_ 開頭的函數
3.執行方式
第一種:cmd 中執行 pytest 命令;先進入代碼所在文件,而後執行 pytest 命令
========== testsession starts ========:表明會話開始
- python3.7:表明那個平臺
- pytest-5.2.1 :表明pytest版本
- rootdir:表明搜索用例的地址
第二種:同第一種方法:在 pycharm 控制檯的 Terminal 功能,執行 pytest 命令
命令:pytest pytest -h :控制檯查看命令行參數 執行標籤名 aaa 的測試用例 pytest -m 標籤名 :經過命令行 -m 過濾用例運行 例如:pytest -m aaa pytest -m 標籤名 -s -v :控制檯搜索輸出詳情用例名,能夠看到成功與失敗提示 例如:pytest -m aaa-s -v
實例:
第三種:pytest 的 main 函數 (同前兩種方法)
import pytest
if __name__ == '__main__': pytest.main()
三、pytest - Mark(打標籤是爲了篩選測試用例:冒煙、迴歸)
3.一、註冊標籤名
3.1.一、註冊方式:建立 pytest.ini 文件,在文件中按以下形式添加標籤名
[pytest] markers= aaa:mao yan bbb ccc ddd # 標籤名冒號後面能夠添加註釋信息必須是英文 # 紅色字段爲固定模式,不能改變
3.1.二、在測試用例/ 測試類前面加上標籤:@pytest.mark.已註冊的標記名
import pytest # 單個標記 @pytest.mark.aaa def test_aaa(): assert 100 == 100
3.1.三、能夠在一個用例上打多個標籤,屢次使用:@pytest.mark.已註冊的標記名
import pytest # 多個標記 @pytest.mark.aaa @pytest.mark.ddd def test_bbb(): assert 200 == 200
3.1.三、在給類打標籤,類裏面的函數打標籤
# 給測試類打標籤 @pytest.mark.ddd class TestDemo: @pytest.mark.bbb def test_ccc(self): assert 300 == 300 @pytest.mark.ccc def test_ddd(self): assert 400 == 400 def test_0_eee(self): assert 500 == 500
3.二、方式二:
3.2.一、在測試類裏,使用如下申明(測試類下,全部用例都被打上該標籤)
class TestDemo: # 單個標籤 pytestmark = pytest.mark.已註冊標籤名 # 多個標籤 pytestmark = [pytest.mark.標籤1, pytest.mark.標籤1]
3.2.二、在模塊文件裏(py文件下,全部測試函數和測試類裏面的測試函數,都有會打上該標籤)
import pytest # 單個標籤 pytestmark = pytest.mark.已註冊標籤名 # 多個標籤 pytestmark = [pytest.mark.標籤1, pytest.mark.標籤1]
四、pytest用例執行順序
4.一、文件名稱 按 ASCII 碼排序
4.二、文件內部按代碼前後順序排序
大佬文檔:https://www.cnblogs.com/Simple-Small/p/11077123.html
*******請你們尊重原創,如要轉載,請註明出處:轉載自:https://www.cnblogs.com/shouhu/,謝謝!!*******