1、pytest介紹:基於unittest 之上的單元測試框架
1.1、自動發現測試模塊和測試用例;
unitest 需要添加用例,(泰斯特樓貸)加載器加載測試用例
pytest 只需要一條代碼就可以
1.2、斷言使用 assert + 表達;
unitest 定義了所有的 斷言方式
pytest 只需要使用一個關鍵字 assert + 表達式 就可以了,表達式為真則斷言通過,表達式為假則斷言失敗
1.3、pytest 可以設置測試會話級、模塊級、類級、函數級的 fixtures;
1.4、有豐富的插件庫,目前在600個以上(框架庫插件地址:http://plugincompat.herokuapp.com/)
2、pytest 收集測試用例規則(按照:目錄-文件-函數/類)
2.1、默認從當前目錄中搜集測試用例,即在那個目錄下運行pytest 命令,則從那個目錄當中搜索
2.2、搜索規則:進入目錄后,在按照搜索規則搜索用例
2.2.1、符合命名規則 test_*.py 或者 *_test.py 的文件
2.2.2、以 test_ 開頭的函數名
2.3.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()
3、pytest - Mark(打標簽是為了篩選測試用例:冒煙、回歸)
3.1、注冊標簽名
3.1.1、注冊方式:創建 pytest.ini 文件,在文件中按如下形式添加標簽名
[pytest] markers= aaa:mao yan bbb ccc ddd # 標簽名冒號后面可以添加注釋信息必須是英文 # 紅色字段為固定模式,不能改變
3.1.2、在測試用例/ 測試類前面加上標簽:@pytest.mark.已注冊的標記名
import pytest # 單個標記
@pytest.mark.aaa def test_aaa(): assert 100 == 100
3.1.3、可以在一個用例上打多個標簽,多次使用:@pytest.mark.已注冊的標記名
import pytest # 多個標記
@pytest.mark.aaa @pytest.mark.ddd def test_bbb(): assert 200 == 200
3.1.3、在給類打標簽,類里面的函數打標簽
# 給測試類打標簽
@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.2、方式二:
3.2.1、在測試類里,使用以下申明(測試類下,所有用例都被打上該標簽)
class TestDemo: # 單個標簽
pytestmark = pytest.mark.已注冊標簽名 # 多個標簽
pytestmark = [pytest.mark.標簽1, pytest.mark.標簽1]
3.2.2、在模塊文件里(py文件下,所有測試函數和測試類里面的測試函數,都有會打上該標簽)
import pytest # 單個標簽
pytestmark = pytest.mark.已注冊標簽名 # 多個標簽
pytestmark = [pytest.mark.標簽1, pytest.mark.標簽1]
4、pytest用例執行順序
4.1、文件名稱 按 ASCII 碼排序
4.2、文件內部按代碼先后順序排序
大佬文檔:https://www.cnblogs.com/Simple-Small/p/11077123.html
*******請大家尊重原創,如要轉載,請注明出處:轉載自:https://www.cnblogs.com/shouhu/,謝謝!!*******