pytest用例執行后,自動生成allure報告並添加環境配置信息


一、問題描述

allure 報告首頁展示的 "環境" 顯示“沒有環境變量” 配置信息,如圖:

二、復制配置文件至allure報告

為了讓allure 報告首頁展示的信息更全面,需要進行設置,一種方法是在項目根路徑創建一個配置文件environment.properties,然后在配置文件中添加自己的信息,如下:

env=TEST
version=3.0
Server=https://www.xtank.com
Tester=xtank

最后,每次執行后將該配置文件復制至allure報告路徑下,如圖:

顯然,這種手動的方法雖然簡單,但比較繁瑣,所以更簡單的辦法是讓其自動復制進去,然后再自動生成allure報告。這里要采用pytest中的hook函數pytest_sessionfinish,代碼如下:

conftest.py

def pytest_sessionfinish(session):
    root_dir = session.config.rootdir
    allure_report_dir = f"{root_dir}\\report\\allure"
    if os.path.exists(allure_report_dir):
        os.system(f"copy {root_dir}\\environment.properties {allure_report_dir}")  # 拷貝配置文件至allure報告路徑中
        os.system(f"allure generate -c {allure_report_dir}")  # 生成allure報告
        os.system(f"allure open allure-report")  # 打開報告
    else:
        log.warning(f"{allure_report_dir},文件路徑不存在")

每次測試執行完成后就會自動生成報告,並將配置信息復制到指定目錄中。如圖:

三、創建配置文件並寫入配置信息

上述方法為復制配置信息至指定目錄。還可以直接寫入配置信息,並在指定目錄生成配置文件。當然配置信息可以由系統打印出並寫入配置文件,也可以提前把配置文件寫入某文件,然后再將配置信息讀取出再寫入新創建的配置文件中,這根據個人喜好而定,此處以配置信息讀取出再寫入新創建的配置文件中為例,代碼如下:

def pytest_sessionfinish(session):
    root_dir = session.config.rootdir
    allure_report_dir = f"{root_dir}\\report\\allure"
    env_path = f"{root_dir}\\environment.properties"
    if os.path.exists(allure_report_dir):
        if os.path.exists(env_path):
            with open(env_path, "r") as fp:  # 讀取配置文件
                data = fp.read()
            with open(f"{allure_report_dir}\\environment.properties", "w") as fp:  # 在allure報告路徑中生成配置文件,並寫入配置信息
                fp.write(data)
        else:
            log.warning(f"{env_path},配置文件不存在")
        os.system(f"allure generate -c {allure_report_dir}")  # 生成allure報告
        os.system(f"allure open allure-report")  # 打開報告
    else:
        log.warning(f"{allure_report_dir},文件路徑不存在")

結果一樣:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM