亚洲中文字幕乱码亚洲-蜜桃成熟视频在线观看-免费中文字幕视频在线-中国五十路熟妇洗澡视频-亚洲av伊人啪啪c-国产精品成人一区二区-国产自拍视频一区在线观看-成人一区不卡二区三区四区-亚洲情精品中文字幕99在线

網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

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

0
分享至

前言

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

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

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

UnitTest

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

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

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

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

HTMLTestrunner支持截圖功能,需要二次開(kāi)發(fā),具體開(kāi)發(fā)內(nèi)容小編就不做太多介紹,小編從網(wǎng)上下載一個(gè)開(kāi)源的HTMLTestrunner,存放在我們的測(cè)試路徑下,接下來(lái)就直接使用代碼進(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="自動(dòng)化測(cè)試報(bào)告",

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

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

runner.run(testunit)

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

Pytest

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

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

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

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

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

我們需要在conftest.py文件中去收集Pytest測(cè)試用例中失敗的結(jié)果,小編這里選擇用pytest_runtest_makereport函數(shù)來(lái)幫忙實(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)告中,圖片名稱(chēng)已當(dāng)前時(shí)間。

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

attachment_type=allure.attachment_type.PNG)

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

@pytest.fixture(scope="session")

def driver():

global d

options=webdriver.ChromeOptions()

options.add_argument("--headless")

d=webdriver.Chrome(options=options)

yield d

d.quit()

編寫(xiě)兩個(gè)簡(jiǎn)單的測(cè)試用例,一個(gè)測(cè)試用例失敗,一個(gè)測(cè)試用例成功。

#coding:utf-8

def test_01(driver):

#失敗案例

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

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

t=driver.title

assert t=='51testing軟件測(cè)試網(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)將對(duì)應(yīng)的失敗截圖已經(jīng)添加到其中了。

總結(jié)

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

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

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

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

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(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)推薦
重要突破,科學(xué)家注射一個(gè)腫瘤細(xì)胞,全身癌細(xì)胞竟然消失

重要突破,科學(xué)家注射一個(gè)腫瘤細(xì)胞,全身癌細(xì)胞竟然消失

心中的麥田
2026-04-19 18:26:11
美國(guó)至少10名科研人員離奇死亡或神秘失蹤引發(fā)廣泛關(guān)注!大都接觸UFO、航空航天、原子能等涉密項(xiàng)目,白宮承諾:徹查

美國(guó)至少10名科研人員離奇死亡或神秘失蹤引發(fā)廣泛關(guān)注!大都接觸UFO、航空航天、原子能等涉密項(xiàng)目,白宮承諾:徹查

大風(fēng)新聞
2026-04-20 09:35:11
特朗普第一任期的白宮律師突然爆猛料:特朗普已經(jīng)撐不下去了

特朗普第一任期的白宮律師突然爆猛料:特朗普已經(jīng)撐不下去了

西樓知趣雜談
2026-04-19 21:25:23
快檢查自家陽(yáng)臺(tái)!有人家里已大量出現(xiàn),官方提醒:千萬(wàn)別摸

快檢查自家陽(yáng)臺(tái)!有人家里已大量出現(xiàn),官方提醒:千萬(wàn)別摸

環(huán)球網(wǎng)資訊
2026-04-18 16:23:18
伊朗總統(tǒng):美國(guó)持續(xù)背信棄義 做出霸凌且不合理行為

伊朗總統(tǒng):美國(guó)持續(xù)背信棄義 做出霸凌且不合理行為

中國(guó)網(wǎng)
2026-04-20 11:09:10
普京訪華行程敲定,特朗普已下命令,中國(guó)向全球通告,無(wú)懼美國(guó)

普京訪華行程敲定,特朗普已下命令,中國(guó)向全球通告,無(wú)懼美國(guó)

田園小歸
2026-04-20 09:17:43
爭(zhēng)議?對(duì)手疑似伸腿踹張雪機(jī)車(chē)惹怒中國(guó)網(wǎng)友 張雪:很正常+很干凈

爭(zhēng)議?對(duì)手疑似伸腿踹張雪機(jī)車(chē)惹怒中國(guó)網(wǎng)友 張雪:很正常+很干凈

風(fēng)過(guò)鄉(xiāng)
2026-04-20 06:45:19
斯諾克世錦賽:丁俊暉送大禮!吉爾伯特被罰12分逆轉(zhuǎn),僅2-3落后

斯諾克世錦賽:丁俊暉送大禮!吉爾伯特被罰12分逆轉(zhuǎn),僅2-3落后

劉姚堯的文字城堡
2026-04-19 19:17:56
學(xué)術(shù)不端是學(xué)術(shù)晉級(jí)的最快捷徑

學(xué)術(shù)不端是學(xué)術(shù)晉級(jí)的最快捷徑

必記本
2026-04-19 22:50:38
王金平力挺了鄭麗文后,連勝文發(fā)聲了,竟主動(dòng)為朱立倫證實(shí)1件事

王金平力挺了鄭麗文后,連勝文發(fā)聲了,竟主動(dòng)為朱立倫證實(shí)1件事

瀲滟晴方DAY
2026-04-20 06:55:07
研究發(fā)現(xiàn):脂肪肝人若常補(bǔ)B族維生素,用不了多久,身體或有3好處

研究發(fā)現(xiàn):脂肪肝人若常補(bǔ)B族維生素,用不了多久,身體或有3好處

小胡軍事愛(ài)好
2026-03-05 20:56:45
季后賽首秀35分!就在今天,一項(xiàng)鄧肯保持的NBA紀(jì)錄被文班打破了

季后賽首秀35分!就在今天,一項(xiàng)鄧肯保持的NBA紀(jì)錄被文班打破了

世界體育圈
2026-04-20 12:45:16
魏建軍提議私家車(chē)10年后再年檢,用OBD和車(chē)聯(lián)網(wǎng)替代實(shí)地檢測(cè)

魏建軍提議私家車(chē)10年后再年檢,用OBD和車(chē)聯(lián)網(wǎng)替代實(shí)地檢測(cè)

快科技
2026-04-19 08:19:03
為什么全國(guó)人民都在拒接電話(huà)?

為什么全國(guó)人民都在拒接電話(huà)?

黯泉
2026-04-18 17:00:56
中國(guó)永遠(yuǎn)的校長(zhǎng),死于1962年

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

最?lèi)?ài)歷史
2024-05-20 13:30:17
隨著巴黎圣日耳曼爆大冷門(mén)1-2,法甲最新積分榜出爐:爭(zhēng)冠白熱化

隨著巴黎圣日耳曼爆大冷門(mén)1-2,法甲最新積分榜出爐:爭(zhēng)冠白熱化

側(cè)身凌空斬
2026-04-20 07:55:12
上海長(zhǎng)征醫(yī)院浦東院區(qū)啟用,緊鄰9號(hào)線曹路站!明后天推出院內(nèi)大型義診

上海長(zhǎng)征醫(yī)院浦東院區(qū)啟用,緊鄰9號(hào)線曹路站!明后天推出院內(nèi)大型義診

上觀新聞
2026-04-20 11:18:09
前英超裁判:加布里埃爾得感謝哈蘭德,后者順勢(shì)倒下就是紅牌

前英超裁判:加布里埃爾得感謝哈蘭德,后者順勢(shì)倒下就是紅牌

懂球帝
2026-04-20 08:00:07
字母哥離隊(duì)倒計(jì)時(shí)!四隊(duì)瘋搶?zhuān)勐钩屑磳㈤_(kāi)張

字母哥離隊(duì)倒計(jì)時(shí)!四隊(duì)瘋搶?zhuān)勐钩屑磳㈤_(kāi)張

茅塞盾開(kāi)本尊
2026-04-20 12:22:09
于海青:為何說(shuō)廣東黃坤明書(shū)記不斷下基層讓企業(yè)信心滿(mǎn)滿(mǎn)?

于海青:為何說(shuō)廣東黃坤明書(shū)記不斷下基層讓企業(yè)信心滿(mǎn)滿(mǎn)?

于海青
2026-04-19 19:54:18
2026-04-20 12:59:00
51Testing軟件測(cè)試網(wǎng) incentive-icons
51Testing軟件測(cè)試網(wǎng)
中國(guó)軟件測(cè)試人的精神家園
1558文章數(shù) 13260關(guān)注度
往期回顧 全部

科技要聞

藍(lán)色起源一級(jí)火箭完美回收 客戶(hù)衛(wèi)星未入軌

頭條要聞

媒體:伊朗剛說(shuō)不談 美國(guó)立即開(kāi)打

頭條要聞

媒體:伊朗剛說(shuō)不談 美國(guó)立即開(kāi)打

體育要聞

七大獎(jiǎng)項(xiàng)候選官宣!文班或全票DPOY

娛樂(lè)要聞

鹿晗生日上熱搜,被關(guān)曉彤撕下體面

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

月之暗面IPO迷局

汽車(chē)要聞

把天門(mén)山搬進(jìn)廠?開(kāi)仰望U8沖上45度坡的那刻 我腿軟了

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

時(shí)尚
本地
手機(jī)
親子
軍事航空

今年最流行的衣服竟然是它?高級(jí)又氣質(zhì)!

本地新聞

12噸巧克力有難,全網(wǎng)化身超級(jí)偵探添亂

手機(jī)要聞

一加Ace6至尊版手機(jī)官宣4月28日發(fā)布:天璣9500、8600mAh

親子要聞

女孩兒學(xué)壞,多半栽在初中

軍事要聞

特朗普:美艦向伊朗貨船開(kāi)火炸出個(gè)洞

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