一、問題描述
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},文件路徑不存在")
結果一樣: