<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
pytest-HTML 是一個外掛,pytest 用於生成測試結果的 HTML 報告。
先簡單寫個例子生成報告看看。
此次主要是針對 Environment 和 Results 兩部分進行修改設定,讓列表部分展示的資料更清晰,增加和刪減列資料。
這裡先介紹下 conftest.py 檔案,主要作用如下:
比如公共用例前置和後置部分,資料清理都可以放在該檔案裡執行。
主要分為增加設定或刪除設定:
def pytest_configure(config): # 新增設定 config._metadata["專案名稱"] = "測試報告" # 刪除設定 config._metadata.pop("JAVA_HOME") config._metadata.pop("Plugins") config._metadata.pop("Packages") config._metadata.pop("Platform")
從上面生成的報告列表中,看到主要分為下面幾列資料:Result、Test、Links、Duration。這裡面的資料其實可以看出都沒有包含我們的測試資料,無法直觀看出輸入、輸出結果。
做如下優化:
基於上述需求,要在報告中新增我們自己的測試資料展示,故需要新增一個全域性變數在一個 case 執行過程中進行記錄供呼叫。
建立全域性變數:
# 定義一個全域性變數,用於儲存內容 global_data = {} @pytest.fixture(scope="function") def set_global_data(): """ 設定全域性變數,用於關聯引數 :return: """ def _set_global_data(key, value): global_data[key] = value yield _set_global_data global_data.clear()
修改我們的用例函數,將測試資料加入到全域性變數中。
@user2ize("data", case_list) def test_case(data, set_global_data): set_global_data("id", data.get("id")) set_global_data("method", data.get("method")) set_global_data("case_input", data.get("case_input")) set_global_data("case_output", data.get("case_output")) try: assert data.get("case_input") == data.get("case_output") except AssertionError: set_global_data("error_step", "斷言失敗") raise
conftest.py 檔案中增加和刪除列。
@user3hook def pytest_html_results_table_header(cells): """ 更改表頭資訊 :param cells: :return: """ cells.insert(1, html.th('用例ID', class_="sortable", col="id")) cells.insert(2, html.th('方法', class_="sortable", col="method")) cells.insert(3, html.th('輸入', class_="sortable", col="case_input")) cells.insert(4, html.th('輸出', class_="sortable", col="case_output")) cells.pop(-1) # 刪除link cells.pop(-2) # 刪除Test @user4hook def pytest_html_results_table_row(cells): """更改表中資料資訊""" cells.insert(1, html.td(global_data.get("id"))) cells.insert(2, html.td(global_data.get("method"))) cells.insert(3, html.td(global_data.get("case_input"))) cells.insert(4, html.td(global_data.get("case_output"))) cells.pop(-1) # 刪除link cells.pop(-2) # 刪除Test
conftest.py 檔案中修改執行結果 show details 內容。
@user5hook def pytest_html_results_table_html(report, data): if report.failed: del data[:] data.append(html.span(f"失敗步驟:{global_data.get('error_step')}n輸出結果:{global_data.get('case_output')}", class_='fail log')) elif report.passed: del data[:] data.append(html.div(f"輸出結果:{global_data.get('case_output')}", class_='success log'))
可以看到現在生成的報告內容就可以清晰看到測試資料,和我們的用例資料關聯上了。
當前只是簡單的對報告展示的資料進行了更改,感興趣可以檢視官方檔案學習
https://docs.pytest.org/en/latest/reference/reference.html
以上就是pytest生成簡單自定義測試結果html報告的詳細內容,更多關於pytest生成自定義測試html的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45