一、斷言assert
二、Pytest 結合 allure-pytest 插件生成美觀的 Allure 報告
(1) 安裝 allure 環境
- 安裝 allure-pytest 插件:
pip install allure-pytest
- 在 github 下載 allure 報告文件
- 地址:Releases · allure-framework/allure2 · GitHub
- 下載:allure-2.21.0.zip
- 配置 path 環境變量(不能有中文):D:\allure-2.21.0\bin
- 重啟 Pycharm 并驗證是否安裝成功
在 dos 和 pycharm 中輸入:allure --version
?能看到版本號說明 OK
(2) 生成 allure 報告
- 生成臨時的 json 報告
addopts = -vs --alluredir=temps --clean-alluredir (ini)
解釋:
--alluredir=temps
?生成臨時的 json 報告--clean-alluredir
?每一次運行清空臨時的 json 報告
- 根據 json 報告生成 html 的 allure 報告
if __name__ == '__main__':pytest.main()time.sleep(3)os.system("allure generate./temps -o./reports --clean")
./temps
?臨時 json 報告文件夾
-o
?output 輸出
./reports
?allure 報告的路徑
--clean
?每一次運行清空 allure 報告
上面這個運行起來有問題 故優化代碼為:
就是把ini的設定放到run里面
(3) 企業級 allure 報告定制
1. 企業 LOGO 定制
更改 D:\allure-2.21.0\config 目錄下的 allure.yml 配置文件,加入自定義 logo
yaml
plugins:- junit-xml-plugin- xunit-xml-plugin- trx-plugin- behaviors-plugin- packages-plugin- screen-diff-plugin- xctest-plugin- jira-plugin- xray-plugin- custom-logo-plugin
2. 更改圖標
在 D:\allure-2.21.0 - 測試 \plugins\custom-logo-plugin\static 目錄下加入 logo 圖片
3. 更改樣式
在 D:\allure-2.21.0 - 測試 \plugins\custom-logo-plugin\static 目錄下修改 style.css 的樣式
css
/*
.side-nav__brand {background: url('logo.png') no-repeat left center!important;margin-left: 10px;
}
*/.side-nav__brand{background: url('logo.png') no-repeat left center!important;margin-left: 22px;height: 90px;background-size: contain!important;
}.side-nav__brand-text{display: none;
}
最后根據margin-left: 22px;
和height: 90px;
樣式調整 logo 大小和位置。
2. 項目結構的報告定制
報告左邊的定制
@allure.epic("項目名稱:碼尚教育金融項目接口自動化報告")
@allure.feature("模塊名稱:用戶管理模塊")
class TestApi:@allure.story("接口名稱:登陸接口")#@allure.title("驗證登陸接口成功返回數據")def test_login(self):print("登陸測試用例")allure.dynamic.title("接口登陸成功")assert "a" in "abc"
報告右邊的定制
優先級:BLOCKER(致命),CRITICAL(嚴重),NORMAL(一般),MINOR(提示),TRIVIAL(輕微)
@allure.epic("項目名稱: 金融項目接口自動化報告")
@allure.feature("模塊名稱: 用戶管理模塊")
class TestApi:@allure.story("接口名稱: 登陸接口")#@allure.title("驗證登陸接口成功返回數據")@allure.severity(allure.severity_level.BLOCKER)def test_login(self):print("登陸測試用例")allure.dynamic.title("接口登陸成功")assert "a" in "abc"@allure.story("接口名稱: 登陸接口")@allure.title("驗證登陸失敗")def test_login2(self):print("登陸測試用例")assert "a" in "abc"def test_register(self):print("注冊測試用例")
裝飾器部分
@allure.epic("項目名稱:金融項目接口自動化報告")
allure.epic
?裝飾器用于定義測試用例所屬的史詩級(項目級)別的標題,這里指定了項目名稱為 “金融項目接口自動化報告” ,在 Allure 報告中會以項目維度進行展示,方便從宏觀層面歸類測試用例。
@allure.feature("模塊名稱:用戶管理模塊")
allure.feature
?裝飾器用來標識測試用例所屬的功能模塊,這里表明這些測試用例屬于 “用戶管理模塊” ,可以將同一功能模塊下的測試用例聚合展示在 Allure 報告中。
@allure.story("接口名稱:登陸接口")
allure.story
?裝飾器用于進一步細化測試用例所屬的用戶故事,這里表示測試用例圍繞 “登陸接口” 展開,可幫助在報告中按不同接口維度組織測試用例。
@allure.title("驗證登陸失敗")
allure.title
?裝飾器用于指定測試用例在 Allure 報告中顯示的標題。在test_login2
方法上使用,意味著該測試用例在報告中展示的標題為 “驗證登陸失敗” ,可使報告中的用例標題更清晰易讀。
@allure.severity(allure.severity_level.BLOCKER)
allure.severity
?裝飾器用于設置測試用例的嚴重級別,這里設置為allure.severity_level.BLOCKER
(致命級別),表示這個測試用例對應的問題如果失敗,會嚴重影響系統功能,導致系統無法正常使用。在 Allure 報告中會根據嚴重級別對測試用例進行分類展示和統計。
@allure.link(url="http://www.baidu.com",name="接口訪問鏈接")
?:在 Allure 報告中添加一個指向指定網址的鏈接,名稱為 “接口訪問鏈接”,方便查看與接口相關的外部資源。@allure.issue(url="http://www.baidu.com",name="bug鏈接")
?:在報告中添加指向 bug 跟蹤系統等的鏈接,名稱為 “bug 鏈接”,用于關聯該測試用例可能存在的問題記錄。@allure.testcase(url="http://www.baidu.com",name="測試用例鏈接")
?:在報告中添加指向測試用例詳細文檔等的鏈接,名稱為 “測試用例鏈接”,方便追溯測試用例的設計和詳細說明。
?
allure.attach()
?是 Allure 框架提供的一個核心方法,用于在測試報告中添加額外的附件(如截圖、日志、請求響應數據等),豐富測試結果的可視化信息。這些附件會顯示在測試報告的詳情頁中,幫助測試人員更直觀地定位問題。
核心功能
-
添加附件到測試報告
可以將各種類型的文件或數據(如圖片、文本、JSON、XML 等)作為附件嵌入到 Allure 報告中。 -
支持多種附件類型
通過?attachment_type
?參數指定附件類型,常見類型包括:allure.attachment_type.PNG
/JPEG
:圖片allure.attachment_type.TEXT
:文本allure.attachment_type.JSON
:JSON 數據allure.attachment_type.HTML
:HTML 片段allure.attachment_type.XML
:XML 數據
方法參數
allure.attach(body: Union[str, bytes], # 附件內容(字符串或字節流)name: str = None, # 附件名稱(顯示在報告中)attachment_type: allure.attachment_type = None, # 附件類型extension: str = None # 附件擴展名(可選)
)