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

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

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

0
分享至

前言

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

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

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

UnitTest

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

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

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

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

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

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

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

runner.run(testunit)

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

Pytest

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

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

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

alluer生成的報告內(nèi)容比較美觀,目前測試中常用的測試報告。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ù)來幫忙實現(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報告截圖

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

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

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

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

#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=='百度一下,你就知道'

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

總結(jié)

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

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

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

最后:在我的V:atstudy-js,可以免費領(lǐng)取一份10G軟件測試工程師面試寶典文檔資料。以及相對應(yīng)的視頻學(xué)習(xí)教程免費分享!其中包括了有基礎(chǔ)知識、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫、抓包工具專題、接口測試工具、測試進階-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)推薦
熱點推薦
多搶18前場板仍輸球,火箭這敗仗因果早已種下,杜蘭特成全村希望

多搶18前場板仍輸球,火箭這敗仗因果早已種下,杜蘭特成全村希望

大飛說籃球
2026-04-19 23:29:39
貴州男教師被學(xué)生誣陷,從18樓跳下以證清白,次日家長崩潰

貴州男教師被學(xué)生誣陷,從18樓跳下以證清白,次日家長崩潰

曉艾故事匯
2025-04-15 22:29:48
山東沒高詩巖這么流暢?外援暴走兜底,3將被盤活,謝智杰奇兵!

山東沒高詩巖這么流暢?外援暴走兜底,3將被盤活,謝智杰奇兵!

籃球資訊達人
2026-04-19 22:22:30
4月20日精選熱點:商業(yè)航天再傳新利好,這些核心龍頭要大漲

4月20日精選熱點:商業(yè)航天再傳新利好,這些核心龍頭要大漲

元芳說投資
2026-04-19 21:04:16
正大光明官宣!中國艦艇編隊過航橫當(dāng)水道

正大光明官宣!中國艦艇編隊過航橫當(dāng)水道

武器縱論
2026-04-19 21:56:32
我退伍后去女戰(zhàn)友家里開的工廠應(yīng)聘,她紅著臉說:你娶我好嗎?

我退伍后去女戰(zhàn)友家里開的工廠應(yīng)聘,她紅著臉說:你娶我好嗎?

千秋文化
2026-04-18 19:07:07
體型越發(fā)“飽滿”!萊昂諾爾公主與索菲亞公主,脂肪堆積真相曝光

體型越發(fā)“飽滿”!萊昂諾爾公主與索菲亞公主,脂肪堆積真相曝光

凡知
2026-04-19 17:25:18
美媒:中國“殲-50”可能只是F-47隱身戰(zhàn)斗機的“低配仿制型號”

美媒:中國“殲-50”可能只是F-47隱身戰(zhàn)斗機的“低配仿制型號”

零度Military
2026-04-18 14:36:44
楊瀚森踏上第一次季后賽之旅!笑容滿面登機 G1有機會上場嗎?

楊瀚森踏上第一次季后賽之旅!笑容滿面登機 G1有機會上場嗎?

羅說NBA
2026-04-19 08:42:47
世錦賽16強賽:中國隊兩勝一負,保持領(lǐng)先

世錦賽16強賽:中國隊兩勝一負,保持領(lǐng)先

老牛體育解說
2026-04-19 20:54:36
方媛曬照慶祝結(jié)婚九周年,吃的東西高級看不懂,水晶燈卻很接地氣

方媛曬照慶祝結(jié)婚九周年,吃的東西高級看不懂,水晶燈卻很接地氣

情感大頭說說
2026-04-19 16:57:51
巴基斯坦伊斯蘭堡兩大酒店通知住客離店

巴基斯坦伊斯蘭堡兩大酒店通知住客離店

界面新聞
2026-04-19 16:22:34
太意外!樊振東德甲110萬歐年薪,扣除稅款后實拿薪資大曝光

太意外!樊振東德甲110萬歐年薪,扣除稅款后實拿薪資大曝光

未曾青梅
2026-04-19 22:09:57
很意外,蘇林坐了12小時中國高鐵,越南人急了

很意外,蘇林坐了12小時中國高鐵,越南人急了

新浪財經(jīng)
2026-04-19 02:38:50
29歲男隊老將再遭沖擊!王皓倫敦世乒布局生變,后備方案真該用了

29歲男隊老將再遭沖擊!王皓倫敦世乒布局生變,后備方案真該用了

體話我說
2026-04-19 11:38:58
今夜,大反轉(zhuǎn)!石油,又爆了

今夜,大反轉(zhuǎn)!石油,又爆了

中國基金報
2026-04-19 00:15:37
用了30年的內(nèi)存條,突然被筆記本廠商集體拋棄

用了30年的內(nèi)存條,突然被筆記本廠商集體拋棄

像素與芯片
2026-04-19 00:20:40
14歲被送上導(dǎo)演的床,17歲拍全裸寫真,被操控半生,如今怎樣了?

14歲被送上導(dǎo)演的床,17歲拍全裸寫真,被操控半生,如今怎樣了?

不似少年游
2026-04-17 19:31:49
3年前就戳穿西貝預(yù)制菜沒人信,如今被實錘!這個探店博主藏得太深了

3年前就戳穿西貝預(yù)制菜沒人信,如今被實錘!這個探店博主藏得太深了

馬蹄燙嘴說美食
2026-04-15 18:29:48
馬筱梅抑郁有跡可循,徐媽黃春梅被曝在其產(chǎn)后第四天向她催債

馬筱梅抑郁有跡可循,徐媽黃春梅被曝在其產(chǎn)后第四天向她催債

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

科技要聞

50分26秒破人類紀錄!300臺機器人狂飆半馬

頭條要聞

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

頭條要聞

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

體育要聞

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

娛樂要聞

何潤東漲粉百萬!內(nèi)娛隔空掀桌第一人

財經(jīng)要聞

華誼兄弟,8年虧光85億

汽車要聞

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

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

手機
藝術(shù)
教育
親子
軍事航空

手機要聞

8.8英寸小鋼炮!REDMI K Pad 2核心配置揭曉

藝術(shù)要聞

拿下阿聯(lián)酋高鐵,中東成了中國基建的“第二主場”!

教育要聞

突發(fā)!南京這所公辦名校,正式更名!

親子要聞

孩子總打噴嚏、起疹子,時過敏嗎?

軍事要聞

伊朗逼退美掃雷艇:美方求給15分鐘撤退

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