Allure詳細安裝請看之前的博客
1.Allure配置與??
????????運??例,?成allure報告
????????pip install allure-pytest -i
? ? ? https://mirrors.aliyun.com/pypi/simple/
????????運??例,?成allure報告
????????
# main.py
import os
import pytest
if __name__ == '__main__':
# 如果加了`-s`或者`-vs`命令,那么打印的內容就不會顯示在報
告中。
pytest.main(['--alluredir', './result', '--clean-alluredir'])
os.system('allure generate ./result/ -o ./report/ --clean')
????????看到這個命令表示allure報告?成成功了:
????????????????
打開report的如下這個
allure報告清空上?次運?的記錄
如果不加清楚的命令,會導致歷史數據有緩存,導致不會?成最新的數據(例如:更改?例的名稱后,?成的報告依舊是歷史的
????????
--alluredir:指定報告的?錄路徑
--clean-alluredir:如果已經存在報告,就先清空它
示例:
pytest.main(['--alluredir', './result', '--clean-alluredir'])
--clean:清除系統中的allure緩存
示例:
os.system('allure generate ./result/ -o ./report/ --clean')
????????
2.Allure報告添加失敗截
固定的鉤?函數名稱(不能隨意修改) :pytest_runtest_makereport
鉤?函數需要配置在conftest.py中:
import allure
import pytest
from selenium import webdriver@pytest.fixture()
def browser():global driver# 01 用例的前置步驟,初始化瀏覽器對象driver = webdriver.Chrome()# 02 用例執行,返回driveryield driver# 03 用例的后置步驟,關閉瀏覽器driver.quit()@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport():# 獲取測試用例的執行結果,yield,返回給out對象,然后再去轉化為result對象out = yield"""從result對象out獲取調用結果的測試報告,返回一個report對象report對象的屬性:包括when(setup,call,teardown等三個值)、nodeid(測試用例的名稱)、outcome(用例的執行結果, passed, failed)"""report = out.get_result() # 返回一個report對象# 僅僅獲取用例call階段的執行結果,不包含setup、teardownif report.when == "call":# 獲取用例call執行結果為失敗的情況xfail = hasattr(report, "wasxfail") # hasattr方法會:返回對象是否具有給定名稱的屬性# 如果測試用例被跳過且標記為預期失敗,或者測試用例執行失敗且不是預期失敗if (report.skipped and xfail) or (report.failed and not xfail):# 添加allure報告截圖with allure.step("添加失敗的截圖 ---> "):allure.attach(driver.get_screenshot_as_png(), "失敗的截圖",allure.attachment_type.PNG)elif report.passed:# 如果測試用例執行通過,添加allure報告截圖with allure.step("添加成功的截圖 ---> "):allure.attach(driver.get_screenshot_as_png(), "成功的截圖",allure.attachment_type.PNG)
3.Allure?例描述詳解
????????作?:提?測試報告的可讀性,減少團隊溝通成本,提升?作效率
????????
????????????????
# 登錄模塊
import allure@allure.epic("讀書屋項目")
@allure.feature("讀書屋 - 登錄模塊")
class TestReadBookHomesLogin:@allure.step("步驟1:打開項目地址")def step01(self, browser):# 步驟1:打開項目地址browser.get("http://novel.hctestedu.com/user/userinfo.html")@allure.step("步驟2:輸入賬號")def step02(self, browser):browser.find_element("id", "txtUName").send_keys("17798989898")@allure.step("步驟3:輸入密碼")def step03(self, browser):browser.find_element("id", "txtPassword").send_keys("123456")@allure.step("步驟4:點擊登錄")def step04(self, browser):browser.find_element("id", "btnLogin").click()@allure.title("login01測試用例")@allure.story("登錄流程用例:流程/場景01")@allure.testcase("http://novel.hctestedu.com/user/login.html")@allure.issue("https://www.baidu.com/?tn=49055317_54_hao_pg")@allure.description("2024年5月25日20:26:00")def test_read_login01(self, browser):self.step01(browser)self.step02(browser)self.step03(browser)self.step04(browser)print("讀書屋項目 - 登錄 - login01測試用例")@allure.title("login02測試用例")@allure.story("登錄流程用例:流程/場景02")@allure.testcase("https://fanyi.youdao.com/index.html#/")def test_read_login02(self, browser):print("讀書屋項目 - 登錄 - login02測試用例")@allure.epic("讀書屋項目")
@allure.feature("讀書屋 - 作家專區")
# 作家專區
class TestReadBookHomesWRITER:@allure.title("writer01測試用例")@allure.story("作家專區流程用例:流程/場景01")def test_read_writer01(self, browser):print("讀書屋項目 - 作家專區 - writer01測試用例")
4.?例等級設置
通過 @allure.severity() 對測試?例設置不同的等級
blocker 阻塞缺陷(功能未實現,?法下?步)
critical 嚴重缺陷(功能點缺失)
normal ?般缺陷(邊界情況,格式錯誤)
minor 次要缺陷(界?錯誤與ui需求不符)
trivial 輕微缺陷(必須項?提示,或者提示不規范)
?
?