轉載至:https://www.cnblogs.com/yoyoketang/p/12194550.html
前言
我們在做功能測試的時候,執行完一輪測試用例,輸出測試報告的時候,會有統計缺陷的數量和等級。
在做自動化測試的過程中,當你的測試用例越來越多的時候,如果執行一輪測試發現了幾個測試不通過,我們也希望能快速統計出缺陷的等級。
pytest結合allure框架可以對用例的等級做詳細的划分。
用例等級
allure對用例的等級划分成五個等級
- blocker 阻塞缺陷(功能未實現,無法下一步)
- critical 嚴重缺陷(功能點缺失)
- normal 一般缺陷(邊界情況,格式錯誤)
- minor 次要缺陷(界面錯誤與ui需求不符)
- trivial 輕微缺陷(必須項無提示,或者提示不規范)
比如我的用例有以下4條
那么對應的用例的等級應該是
- 修改個人信息-sex參數為空 這個屬於邊界值情況的測試,應該是normal級別
- 修改個人信息-sex參數傳F和M兩種類型,成功(枚舉類型) 這個是針對接口的功能點詳細測試 critical級別
- 修改個人信息-修改不是本人的用戶信息,無權限操作 這個是針對接口的功能點詳細測試 critical級別
- 修改個人信息-修改自己的個人信息,修改成功 這是用例是測試主流程 blocker級別
pytest用例
根據測試用例的重要性划分測試用例等級,如果沒指定等級,默認為normal級別
import pytest import allure ''' 作者:上海-悠悠 qq交流群:874033608 @allure.severity裝飾器按嚴重性級別來標記case 執行指定測試用例 --allure-severities blocker BLOCKER = 'blocker' 阻塞缺陷 CRITICAL = 'critical' 嚴重缺陷 NORMAL = 'normal' 一般缺陷 MINOR = 'minor' 次要缺陷 TRIVIAL = 'trivial' 輕微缺陷 ''' @allure.severity("normal") def test_case_1(): '''修改個人信息-sex參數為空''' print("test case 11111111") @allure.severity("critical") def test_case_2(): '''修改個人信息-sex參數傳F和M兩種類型,成功(枚舉類型)''' print("test case 222222222") @allure.severity("critical") def test_case_3(): '''修改個人信息-修改不是本人的用戶信息,無權限操作''' print("test case 333333333") @allure.severity("blocker") def test_case_4(): '''修改個人信息-修改自己的個人信息,修改成功''' print("test case 4444444") def test_case_5(): '''沒標記severity的用例默認為normal''' print("test case 5555555555")
cd到用例的目錄,執行用例,查看報告
pytest --alluredir ./report/allure
allure serve ./report/allure
查看報告詳情
統計缺陷
如果執行用例的過程中有測試用例不通過的情況,也可以統計缺陷的嚴重等級
# 修改上面2個用例,故意讓用例失敗 @allure.severity("blocker") def test_case_4(): '''修改個人信息-修改自己的個人信息,修改成功''' print("test case 4444444") assert 1==2 def test_case_5(): '''沒標記severity的用例默認為normal''' print("test case 5555555555") assert 1==2
重新執行用例,查看報告-圖表
allure命令行參數allure-severities
pytest -h可以查看到allure相關的幾個命令行參數
--allure-severities=SEVERITIES_SET
Comma-separated list of severity names. Tests only
with these severities will be run. Possible values
are: blocker, critical, normal, minor, trivial.
如果有很多測試用例,現在只想做個快速的回歸測試,只測試用例級別為blocker和critical級別的測試用例
pytest --alluredir ./report/allure --allure-severities blocker,critical
也可以這樣寫
pytest --alluredir=./report/allure --allure-severities=blocker,critical
如果只執行blocker級別的用例
pytest --alluredir=./report/allure --allure-severities=blocker