pytest是個成熟全套的 python 自動化測試工具。單元測試,功能測試、接口自動化測試中都可應用;與 unittest相比,它能支持更多、更全面的功能,同時也具有更多特點和優點,能夠參考以前同窗發佈的文章。python
動態挑選測試用例一直是測試框架使用的必要功能,好比執行冒煙case進行預測試,針對開發對改動模塊進行測試等,根據需求不一樣的測試階段或測試範圍內動態調整執行對應的case。在 pytest 裏能夠按照tag或者按文件動態挑選測試用例,下面簡單介紹一下按tag動態挑選用例。微信
須要如下兩個步驟:框架
1.首先給測試用例打標籤(mark),在class、method 上加上以下格式裝飾器,以下面簡單示例:函數
@pytest.mark.xxx工具
執行class中的用例
單元測試
執行函數中的用例
測試
執行class中的函數this
2.在運行時,命令行動態指定標籤運行:spa
# 同時選中帶有這兩個標籤的全部測試用例運行.net
pytest -m "mark1 and mark2"
# 選中帶有mark1或 mark2標籤的全部測試用例
pytest -m "mark1 or mark2"
# 選中帶有mark1的測試用例,不運行mark2的測試用例
pytest -m "mark1 and not mark2"
下面用命令行執行-v查看執行詳細信息,使用以上規則執行,能夠看到沒有同時知足important和smoke的用例,important且unrun的用例一條,smoke或unrun的用例兩條,important但不是un的用例一條,且執行結果如標籤內容
在執行-m 參數 mark 標記的用例時,pytest 會發出告警信息 「PytestUnknownMarkWarning: Unknown pytest.mark.login - is this a typo? 」如
這是一個 pytest 未知的一個標記,爲了消除告警,須要在 pytest的配置文件中註冊 mark 標記。
註冊 mark 標記:
首先在項目根目錄建立一個文件pytest.ini ,這個是 pytest 的配置文件;
而後在 pytest.ini 文件的markers 中寫入 mark 標記, 冒號 「:」 前面是標記名稱,後面是 mark 標記的說明,能夠是空字符串;
注意:pytest.ini文件中只能使用純英文字符,絕對不能使用中文的字符(尤爲是冒號和空格)!
註冊完 mark 標記以後 pytest 便不會再告警。注意:pytest.ini 配置文件不支持註釋
[pytest]
markers =testclass : 'marks tests as classlevel'
smoke : 'marks tests as smoke'
important : 'marks tests as important'
unrun : 'marks tests as not to run'
本文分享自微信公衆號 - 搜狗測試(SogouQA)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。