无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

Python自帶單元測試框架UnitTest,如何生成獨立的測試報告?

0
分享至

前言

當我們在公司跑UI自動化的時候,一般都會選擇晚上或者工作日休息時進行運行。那么當程序這時運行,如果自動化出現錯誤,我們又不知道當時頁面是什么原因導致測試用例失敗,怎么辦?

這個時候我們就想到在其測試用例失敗的時候,進行自動截圖當時圖片,然后保存下來,這樣當測試人員后面查看測試報告時,就可以很清楚的看到當時錯誤內容,然后排查測試用例失敗的原因。

今天小編就介紹幾種在自動化測試報告中增加測試用例失敗的截圖的方法,這里小編運用了UI自動化測試中常用的兩種單元測試框架,進行為其增加在測試報告中增加其失敗截圖。

UnitTest

UnitTest屬于早期的Python的單元測試,其功能雖然沒有Pytest強大,但也能符合并滿足我們當時的功能需求,UnitTest屬于Python自帶的單元測試框架,類似于Java的JUnit。

UnitTest支持編寫測試自動化用例,多個用例中共享一個前置和后置內容,有多種執行測試用例的方法,支持生成獨立的測試報告內容。

具體詳情可以了解官方文檔:https://docs.python.org/2/library/unittest.html

UnitTest生成的測試報告常見的有HTMLTestrunner,這個是屬于Python的一個標準庫,需要下載,下載完成后使用時候,直接進行調用即可。

HTMLTestrunner支持截圖功能,需要二次開發,具體開發內容小編就不做太多介紹,小編從網上下載一個開源的HTMLTestrunner,存放在我們的測試路徑下,接下來就直接使用代碼進行調用:

#coding:utf-8

import unittest

import HTMLTestRunner_cn

fromseleniumimport webdriver

class Test(unittest.TestCase):

@classmethod

def setUpClass(cls):

cls.driver=webdriver.Chrome()

@classmethod

def tearDownClass(cls):

cls.driver.quit()

def test_01(self):

"""定位失敗截圖案例"""

self.driver.get("https://www.baidu.com")

self.driver.find_element_by_id('anjing').send_keys('百度一下')

self.driver.find_element_by_id('su').click()

self.assertTrue(True)

def test_02(self):

"""成功案例"""

self.driver.get("https://www.baidu.com")

self.assertIn("百度一下,你就知道",self.driver.title)

if__name__=="__main__":

testunit=unittest.TestSuite()

#加載用例

testunit.addTests(unittest.TestLoader().loadTestsFromTestCase(Test))

#執行用例

runner=HTMLTestRunner_cn.HTMLTestRunner(title="自動化測試報告",

description="測試結果",

stream=open("result.html","wb"),

runner.run(testunit)

代碼編寫完成后,直接進行執行程序,執行完成后,就會發現我們測試報告已經生成了,直接打開就可以看到自動化測試結果,失敗的存在截圖信息。

Pytest

Pytest是一個使創建簡單及可擴展性測試用例變得非常方便的框架,測試用例清晰、易讀而無需大量的繁瑣代碼。

只要幾分鐘你就可以對你的應用程序或者庫展開一個小型的單元測試或者復雜的功能測試。Pytest支持第三方插件,靈活性較高。

這里小編通過Pytest生成的Allure報告中添加測試報告內容。其中Allure屬于一種開源的測試框架,可以基于多種語言進行使用,如Java的JUnit、Python的Pytest。

alluer生成的報告內容比較美觀,目前測試中常用的測試報告。Allure的環境是基于Java環境的,前提條件需要將Java的環境安裝完成(下載JDK,配置環境變量)。

下載地址:https://github.com/allure-framework/allure2(具體安裝不在過多介紹)。

我們需要在conftest.py文件中去收集Pytest測試用例中失敗的結果,小編這里選擇用pytest_runtest_makereport函數來幫忙實現。

#conftest.py

from selenium import webdriver

import pytest

import time

import allure

te=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())

@pytest.hookimpl(tryfirst=True,hookwrapper=True)

def pytest_runtest_makereport(item,call):

#獲取鉤子方法的調用結果

outcome=yield

rep=outcome.get_result()

#僅僅獲取用例call執行結果是失敗的情況

if rep.when=="call"and rep.failed:

#添加allure報告截圖

with allure.step('失敗截圖:'):

#將截圖添加到報告中,圖片名稱已當前時間。

allure.attach(d.get_screenshot_as_png(),name=te,

attachment_type=allure.attachment_type.PNG)

#配置瀏覽器驅動,不顯示瀏覽器執行過程

@pytest.fixture(scope="session")

def driver():

global d

options=webdriver.ChromeOptions()

options.add_argument("--headless")

d=webdriver.Chrome(options=options)

yield d

d.quit()

編寫兩個簡單的測試用例,一個測試用例失敗,一個測試用例成功。

#coding:utf-8

def test_01(driver):

#失敗案例

driver.get('https://www.baidu.com/')

driver.find_element_by_id('kw').send_keys('51testing軟件測試網')

t=driver.title

assert t=='51testing軟件測試網'

def test_02(driver):

#成功案例

driver.get('https://www.baidu.com/')

driver.find_element_by_id('kw').send_keys('安靜')

t=driver.title

assert t=='百度一下,你就知道'

然后運行Pytest并且生成Allure報告,查看到Allure報告中,已經將對應的失敗截圖已經添加到其中了。

總結

小編分別通過UnitTest和Pytest在測試用例中增加對應的失敗截圖功能,其中關于UnitTest比較簡單,直接在網上查找對應的Htmltestrunner報告就可以了。

但是在Allure報告中添加失敗截圖,需要在conftest.py中進行對現有的函數進行二次開發,不過開發比較簡單,主要在于孰能生巧。

當然具體怎么在對應項目中使用,這個就要看小伙伴們的操作了。感謝您的閱讀,希望本篇文章對您有所幫助。

最后:在我的V:atstudy-js,可以免費領取一份10G軟件測試工程師面試寶典文檔資料。以及相對應的視頻學習教程免費分享!其中包括了有基礎知識、Linux必備、Shell、互聯網程序原理、Mysql數據庫、抓包工具專題、接口測試工具、測試進階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續集成、測試架構開發測試框架、性能測試、安全測試等。

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
真是酸葡萄?巴塞羅那放棄B席的五大原因

真是酸葡萄?巴塞羅那放棄B席的五大原因

本澤體育
2026-06-13 09:08:19
中國連續取消兩場會議,歐盟外長惹怒所有人,法德討論對其削權

中國連續取消兩場會議,歐盟外長惹怒所有人,法德討論對其削權

流史歲月
2026-06-12 16:50:04
國內50后還剩多少人?真實數據曝光,活到80歲的比例太意外!

國內50后還剩多少人?真實數據曝光,活到80歲的比例太意外!

華庭講美食
2026-06-10 17:04:25
董路再惹爭議!足球小將爆冷1-0桑托斯:中國球員只上4人 7名外援

董路再惹爭議!足球小將爆冷1-0桑托斯:中國球員只上4人 7名外援

念洲
2026-06-12 10:55:10
外資控制蒙古銅礦,340萬人淪為性旅游后花園

外資控制蒙古銅礦,340萬人淪為性旅游后花園

清歡百味
2026-06-11 18:45:10
張鎮麟落選國家隊內幕曝光!集訓前夕請假了:郭士強沒有放棄他?

張鎮麟落選國家隊內幕曝光!集訓前夕請假了:郭士強沒有放棄他?

籃球快餐車
2026-06-13 05:24:03
大博阿滕:我曾經與女友每周纏綿至少七八次,上場后雙腿無力

大博阿滕:我曾經與女友每周纏綿至少七八次,上場后雙腿無力

懂球帝
2026-06-11 10:02:52
就喝了兩次!周身淤堵通了,暗黃全褪,臉色紅潤透亮到發光

就喝了兩次!周身淤堵通了,暗黃全褪,臉色紅潤透亮到發光

白米飯怎么吃
2026-06-11 13:11:05
??怂拱l聲反令總決爭議升級

福克斯發聲反令總決爭議升級

體壇周報
2026-06-13 03:37:14
多座大橋被炸斷,“新俄羅斯”公路被關閉:俄軍50輛卡車遭一鍋端

多座大橋被炸斷,“新俄羅斯”公路被關閉:俄軍50輛卡車遭一鍋端

鷹眼Defence
2026-06-12 16:20:12
中方深夜通告全球,菲律賓暴怒,菲防長徹底破防:我只是說了實話

中方深夜通告全球,菲律賓暴怒,菲防長徹底破防:我只是說了實話

飄逸語人
2026-06-13 00:32:59
深夜!17股大幅減持,8股要退市,4股收到監管函,下周別踩雷

深夜!17股大幅減持,8股要退市,4股收到監管函,下周別踩雷

風風順
2026-06-13 06:56:47
甲鈷胺能長期吃嗎?吃吃停停可以嗎?本文一次性告訴您答案

甲鈷胺能長期吃嗎?吃吃停??梢詥??本文一次性告訴您答案

藥師方健
2026-06-12 22:46:03
13日凌晨WTT挑戰賽:男單4強賽誕生 溫瑞博苦戰5局 林詩棟也被淘汰

13日凌晨WTT挑戰賽:男單4強賽誕生 溫瑞博苦戰5局 林詩棟也被淘汰

林子說事
2026-06-13 03:24:14
林水龍同志逝世

林水龍同志逝世

政知新媒體
2026-06-12 20:57:57
韓國教授:漢朝前中國一直歸屬韓國統治,外國網友評論出奇一致

韓國教授:漢朝前中國一直歸屬韓國統治,外國網友評論出奇一致

小豫講故事
2026-06-12 06:00:09
18次打進世界杯有多難?歷史僅5隊,亞洲無球隊上榜 巴西從未缺席

18次打進世界杯有多難?歷史僅5隊,亞洲無球隊上榜 巴西從未缺席

籃球圈里的那些事
2026-06-12 21:33:22
魔術師:湖人需盡快敲定詹姆斯去向

魔術師:湖人需盡快敲定詹姆斯去向

體壇周報
2026-06-13 07:39:29
“孩子等了一個月的硬菜被你毀了!”家長給娃請假,被嘲自我感動

“孩子等了一個月的硬菜被你毀了!”家長給娃請假,被嘲自我感動

熙熙說教
2026-06-12 19:28:35
我國最大遺憾!1994年將領土劃給俄羅斯,如今還能再收回來嗎?

我國最大遺憾!1994年將領土劃給俄羅斯,如今還能再收回來嗎?

談古論今歷史有道
2026-06-10 09:30:09
2026-06-13 09:43:00
51Testing軟件測試網 incentive-icons
51Testing軟件測試網
中國軟件測試人的精神家園
1588文章數 13274關注度
往期回顧 全部

科技要聞

SpaceX上市首日破2萬億美元,馬斯克再封神

頭條要聞

牛彈琴:全世界都要精疲力竭時 一個超級好消息要來了

頭條要聞

牛彈琴:全世界都要精疲力竭時 一個超級好消息要來了

體育要聞

歐洲恐韓?肉德維德?

娛樂要聞

一天4個瓜,肖戰熱巴最意外

財經要聞

梁文鋒向左,楊植麟向右

汽車要聞

標配激光雷達/雙動力可選 昊鉑S600限時售17.99萬起

態度原創

親子
時尚
藝術
本地
旅游

親子要聞

超好看公主裙子女童1

今日熱點:白鹿起訴蒙淇淇;岳云鵬回應開演唱會質疑……

藝術要聞

砸了640億,再賠160億!沙特“The Line”項目徹底涼了?

本地新聞

AK劉彰邂逅河北南大港濕地

旅游要聞

“登超”開場 “六絕”世界級氣象奇觀閃現牛背山

無障礙瀏覽 進入關懷版