国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

Python自帶單元測試框架UnitTest,如何生成獨(dú)立的測試報(bào)告?

0
分享至

前言

當(dāng)我們在公司跑UI自動化的時(shí)候,一般都會選擇晚上或者工作日休息時(shí)進(jìn)行運(yùn)行。那么當(dāng)程序這時(shí)運(yùn)行,如果自動化出現(xiàn)錯誤,我們又不知道當(dāng)時(shí)頁面是什么原因?qū)е聹y試用例失敗,怎么辦?

這個(gè)時(shí)候我們就想到在其測試用例失敗的時(shí)候,進(jìn)行自動截圖當(dāng)時(shí)圖片,然后保存下來,這樣當(dāng)測試人員后面查看測試報(bào)告時(shí),就可以很清楚的看到當(dāng)時(shí)錯誤內(nèi)容,然后排查測試用例失敗的原因。

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

UnitTest

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

UnitTest支持編寫測試自動化用例,多個(gè)用例中共享一個(gè)前置和后置內(nèi)容,有多種執(zhí)行測試用例的方法,支持生成獨(dú)立的測試報(bào)告內(nèi)容。

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

UnitTest生成的測試報(bào)告常見的有HTMLTestrunner,這個(gè)是屬于Python的一個(gè)標(biāo)準(zhǔn)庫,需要下載,下載完成后使用時(shí)候,直接進(jìn)行調(diào)用即可。

HTMLTestrunner支持截圖功能,需要二次開發(fā),具體開發(fā)內(nèi)容小編就不做太多介紹,小編從網(wǎng)上下載一個(gè)開源的HTMLTestrunner,存放在我們的測試路徑下,接下來就直接使用代碼進(jìn)行調(diào)用:

#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))

#執(zhí)行用例

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

description="測試結(jié)果",

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

runner.run(testunit)

代碼編寫完成后,直接進(jìn)行執(zhí)行程序,執(zhí)行完成后,就會發(fā)現(xiàn)我們測試報(bào)告已經(jīng)生成了,直接打開就可以看到自動化測試結(jié)果,失敗的存在截圖信息。

Pytest

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

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

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

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

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

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

#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):

#獲取鉤子方法的調(diào)用結(jié)果

outcome=yield

rep=outcome.get_result()

#僅僅獲取用例call執(zhí)行結(jié)果是失敗的情況

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

#添加allure報(bào)告截圖

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

#將截圖添加到報(bào)告中,圖片名稱已當(dāng)前時(shí)間。

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

attachment_type=allure.attachment_type.PNG)

#配置瀏覽器驅(qū)動,不顯示瀏覽器執(zhí)行過程

@pytest.fixture(scope="session")

def driver():

global d

options=webdriver.ChromeOptions()

options.add_argument("--headless")

d=webdriver.Chrome(options=options)

yield d

d.quit()

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

#coding:utf-8

def test_01(driver):

#失敗案例

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

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

t=driver.title

assert t=='51testing軟件測試網(wǎng)'

def test_02(driver):

#成功案例

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

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

t=driver.title

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

然后運(yùn)行Pytest并且生成Allure報(bào)告,查看到Allure報(bào)告中,已經(jīng)將對應(yīng)的失敗截圖已經(jīng)添加到其中了。

總結(jié)

小編分別通過UnitTest和Pytest在測試用例中增加對應(yīng)的失敗截圖功能,其中關(guān)于UnitTest比較簡單,直接在網(wǎng)上查找對應(yīng)的Htmltestrunner報(bào)告就可以了。

但是在Allure報(bào)告中添加失敗截圖,需要在conftest.py中進(jìn)行對現(xiàn)有的函數(shù)進(jìn)行二次開發(fā),不過開發(fā)比較簡單,主要在于孰能生巧。

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

最后:在我的V:atstudy-js,可以免費(fèi)領(lǐng)取一份10G軟件測試工程師面試寶典文檔資料。以及相對應(yīng)的視頻學(xué)習(xí)教程免費(fèi)分享!其中包括了有基礎(chǔ)知識、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫、抓包工具專題、接口測試工具、測試進(jìn)階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續(xù)集成、測試架構(gòu)開發(fā)測試框架、性能測試、安全測試等。

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

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.

相關(guān)推薦
熱點(diǎn)推薦
王健林,被逼到崩潰邊緣...

王健林,被逼到崩潰邊緣...

鳴金網(wǎng)
2026-04-16 19:42:33
中國永遠(yuǎn)的校長,死于1962年

中國永遠(yuǎn)的校長,死于1962年

最愛歷史
2024-05-20 13:30:17
鋁企突發(fā)爆炸事故!已致19死17傷!

鋁企突發(fā)爆炸事故!已致19死17傷!

新浪財(cái)經(jīng)
2026-04-18 13:52:44
不建議有司機(jī)大老板買小米!雷軍回應(yīng)小米YU7二排比邁巴赫多一度:沒有詆毀 但確實(shí)多

不建議有司機(jī)大老板買小米!雷軍回應(yīng)小米YU7二排比邁巴赫多一度:沒有詆毀 但確實(shí)多

快科技
2026-04-18 10:12:12
天津,昨天晚上起了把火

天津,昨天晚上起了把火

靠山屯閑話
2026-04-19 07:51:24
廣西百色5歲男童失聯(lián)超40小時(shí)今日發(fā)現(xiàn)身亡,父母太大意了

廣西百色5歲男童失聯(lián)超40小時(shí)今日發(fā)現(xiàn)身亡,父母太大意了

九方魚論
2026-04-19 18:07:34
何潤東:我已經(jīng)51歲了,摔下來的話,會破壞大家對項(xiàng)羽的感受

何潤東:我已經(jīng)51歲了,摔下來的話,會破壞大家對項(xiàng)羽的感受

懂球帝
2026-04-19 12:31:08
和黃圣依離婚后,楊子去娘家接娃,14歲安迪駝背自卑,9歲弟弟帥

和黃圣依離婚后,楊子去娘家接娃,14歲安迪駝背自卑,9歲弟弟帥

椰黃娛樂
2026-04-19 12:34:43
突發(fā)!朝鮮向日本方向猛烈發(fā)射導(dǎo)彈:日本太狼狽,反華氣焰被打臉

突發(fā)!朝鮮向日本方向猛烈發(fā)射導(dǎo)彈:日本太狼狽,反華氣焰被打臉

影像溫度
2026-04-19 19:02:44
不卑微!一新生坦誠告知室友家窮,聚餐不必叫自己,宿舍衛(wèi)生全包

不卑微!一新生坦誠告知室友家窮,聚餐不必叫自己,宿舍衛(wèi)生全包

火山詩話
2026-04-17 09:22:03
罕見!北約30國駐布魯塞爾大使集體訪日

罕見!北約30國駐布魯塞爾大使集體訪日

參考消息
2026-04-18 17:59:50
郭冬臨現(xiàn)狀:住北京老房子,身形消瘦、臉頰凹陷,59歲無兒無女

郭冬臨現(xiàn)狀:住北京老房子,身形消瘦、臉頰凹陷,59歲無兒無女

攬星河的筆記
2026-04-17 18:36:52
別再尬演“萬人迷”!滿臉褶子疙瘩、鼻孔朝天,這皮囊能迷倒誰?

別再尬演“萬人迷”!滿臉褶子疙瘩、鼻孔朝天,這皮囊能迷倒誰?

雨月海星
2026-04-18 05:25:40
美以狂轟濫炸之際,猛然回頭才發(fā)現(xiàn),原來中東早已鋪滿中國光伏!

美以狂轟濫炸之際,猛然回頭才發(fā)現(xiàn),原來中東早已鋪滿中國光伏!

顧蔡衛(wèi)
2026-04-19 04:42:48
英國小妹歧視中國人后續(xù):身份曝光社死,學(xué)?;貞?yīng)下場大快人心

英國小妹歧視中國人后續(xù):身份曝光社死,學(xué)?;貞?yīng)下場大快人心

王誙自駕
2026-04-19 15:07:40
牡丹江男子拽住跳樓女友整整五分鐘,力竭松手女方墜亡,法院判了

牡丹江男子拽住跳樓女友整整五分鐘,力竭松手女方墜亡,法院判了

奇思妙想草葉君
2026-04-18 12:15:59
24歲女研究生坐6小時(shí)贏得“發(fā)呆比賽”冠軍 高興落淚:堅(jiān)持一件事真的不容易

24歲女研究生坐6小時(shí)贏得“發(fā)呆比賽”冠軍 高興落淚:堅(jiān)持一件事真的不容易

紅星新聞
2026-04-19 18:57:41
重慶將出現(xiàn)今年首場暴雨 22個(gè)區(qū)縣啟動城市內(nèi)澇災(zāi)害Ⅳ級防御響應(yīng)

重慶將出現(xiàn)今年首場暴雨 22個(gè)區(qū)縣啟動城市內(nèi)澇災(zāi)害Ⅳ級防御響應(yīng)

上游新聞
2026-04-19 12:07:02
6月1日起看病大變天,3類小病不再收,社區(qū)醫(yī)院成主力

6月1日起看病大變天,3類小病不再收,社區(qū)醫(yī)院成主力

老特有話說
2026-04-19 15:10:09
車輛卸沙現(xiàn)場一男性尸體隨沙料傾瀉而出,僅露出褲腿和雙腳,官方公布事故調(diào)查報(bào)告:生產(chǎn)主管違規(guī)進(jìn)入鏟車作業(yè)區(qū)域,被連人帶沙鏟入斗中,大量沙土掩埋窒息身亡

車輛卸沙現(xiàn)場一男性尸體隨沙料傾瀉而出,僅露出褲腿和雙腳,官方公布事故調(diào)查報(bào)告:生產(chǎn)主管違規(guī)進(jìn)入鏟車作業(yè)區(qū)域,被連人帶沙鏟入斗中,大量沙土掩埋窒息身亡

觀威海
2026-04-19 15:24:03
2026-04-19 20:48:49
51Testing軟件測試網(wǎng) incentive-icons
51Testing軟件測試網(wǎng)
中國軟件測試人的精神家園
1558文章數(shù) 13260關(guān)注度
往期回顧 全部

科技要聞

50分26秒破人類紀(jì)錄!300臺機(jī)器人狂飆半馬

頭條要聞

半年下沉22厘米 女子家中坐擁價(jià)值上億別墅卻沒法住人

頭條要聞

半年下沉22厘米 女子家中坐擁價(jià)值上億別墅卻沒法住人

體育要聞

湖人1比0火箭:老詹比烏度卡像教練

娛樂要聞

張?zhí)鞇墼u論區(qū)淪陷!被曝卷入小三風(fēng)波

財(cái)經(jīng)要聞

華誼兄弟,8年虧光85億

汽車要聞

29分鐘大定破萬 極氪8X為什么這么多人買?

態(tài)度原創(chuàng)

旅游
健康
家居
教育
藝術(shù)

旅游要聞

豐臺王佐這片花海,真的藏不住了!春天必沖的打卡地標(biāo)

干細(xì)胞抗衰4大誤區(qū),90%的人都中招

家居要聞

法式線條 時(shí)光靜淌

教育要聞

高考綜合改革成績突出!綿陽5家單位、12名個(gè)人獲得表彰

藝術(shù)要聞

俄羅斯畫家季莫申科 小幅風(fēng)景油畫寫生(二)

無障礙瀏覽 進(jìn)入關(guān)懷版