<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

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

      0
      分享至

      前言

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

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



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

      UnitTest

      UnitTest屬于早期的Python的單元測試,其功能雖然沒有Pytest強大,但也能符合并滿足我們當時的功能需求,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="測試結果",

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

      runner.run(testunit)

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



      Pytest

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

      只要幾分鐘你就可以對你的應用程序或者庫展開一個小型的單元測試或者復雜的功能測試。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測試用例中失敗的結果,小編這里選擇用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)用結果

      outcome=yield

      rep=outcome.get_result()

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

      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)

      #配置瀏覽器驅動,不顯示瀏覽器執(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)將對應的失敗截圖已經(jīng)添加到其中了。



      總結

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

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

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

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

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

      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.

      相關推薦
      熱點推薦
      法國和浙江同為6000萬人口,2025年法國創(chuàng)3萬億美元GDP,浙江呢?

      法國和浙江同為6000萬人口,2025年法國創(chuàng)3萬億美元GDP,浙江呢?

      八斗小先生
      2026-02-28 18:56:17
      美以襲擊伊朗,華人緊急逃離德黑蘭:沒想到襲擊來得這么快,連夜買機票離開但領空已關閉,街頭發(fā)生爆炸已斷網(wǎng)

      美以襲擊伊朗,華人緊急逃離德黑蘭:沒想到襲擊來得這么快,連夜買機票離開但領空已關閉,街頭發(fā)生爆炸已斷網(wǎng)

      極目新聞
      2026-02-28 17:13:18
      伊朗陸軍總司令身亡?美以“斬首”行動瞄準最高領袖,哈梅內(nèi)伊已做好遇刺準備

      伊朗陸軍總司令身亡?美以“斬首”行動瞄準最高領袖,哈梅內(nèi)伊已做好遇刺準備

      上觀新聞
      2026-02-28 19:47:38
      突發(fā)!以搶在美國前頭開戰(zhàn),伊朗慫了也沒用,絕非重演伊拉克劇本

      突發(fā)!以搶在美國前頭開戰(zhàn),伊朗慫了也沒用,絕非重演伊拉克劇本

      小徹
      2026-02-28 18:45:50
      伊拉克民兵組織襲擊美軍基地

      伊拉克民兵組織襲擊美軍基地

      界面新聞
      2026-02-28 19:52:56
      中國男籃vs中國臺北12人名單:郭士強不變陣 謹防重演馬尼拉慘案

      中國男籃vs中國臺北12人名單:郭士強不變陣 謹防重演馬尼拉慘案

      醉臥浮生
      2026-02-28 19:58:02
      伊朗公布戰(zhàn)果

      伊朗公布戰(zhàn)果

      新浪財經(jīng)
      2026-02-28 22:01:12
      河南洛陽一女子過年離家,智能馬桶17天耗水超200噸,當事人:馬桶晝夜不停自動工作

      河南洛陽一女子過年離家,智能馬桶17天耗水超200噸,當事人:馬桶晝夜不停自動工作

      黃河新聞網(wǎng)呂梁
      2026-02-28 14:27:42
      歐盟稱收到伊朗“任何船只均不得通過霍爾木茲海峽”無線電信號

      歐盟稱收到伊朗“任何船只均不得通過霍爾木茲海峽”無線電信號

      界面新聞
      2026-02-28 23:52:50
      “史詩怒火”,美以正式開打

      “史詩怒火”,美以正式開打

      難得君
      2026-02-28 17:42:42
      擊落全部巡航導彈和高超音速導彈!俄軍最優(yōu)秀防空專家陣亡

      擊落全部巡航導彈和高超音速導彈!俄軍最優(yōu)秀防空專家陣亡

      鷹眼Defence
      2026-02-28 16:56:22
      特朗普突然發(fā)文昭告全球,包括中國俄羅斯在內(nèi),這次一個都跑不掉

      特朗普突然發(fā)文昭告全球,包括中國俄羅斯在內(nèi),這次一個都跑不掉

      帶你領略快樂真諦
      2026-02-28 16:55:50
      不到24小時,美以對伊完成二次打擊,俄媒警告:川普在逼中國下場

      不到24小時,美以對伊完成二次打擊,俄媒警告:川普在逼中國下場

      Ck的蜜糖
      2026-02-28 21:02:23
      周扒皮都怕!女兒替父請假2小時遭辭退,店已關門,老板底褲被扒

      周扒皮都怕!女兒替父請假2小時遭辭退,店已關門,老板底褲被扒

      火山詩話
      2026-02-28 06:38:05
      美方將對伊朗行動評估為“高風險高回報”

      美方將對伊朗行動評估為“高風險高回報”

      界面新聞
      2026-02-28 23:17:08
      以色列突然襲擊伊朗,不是強拉美國上車,而是為特朗普緩解壓力

      以色列突然襲擊伊朗,不是強拉美國上車,而是為特朗普緩解壓力

      以辛德之名
      2026-02-28 15:29:13
      22歲男孩樊宸鑠去世!是家中獨子,死因曝光,網(wǎng)友:名字取大了

      22歲男孩樊宸鑠去世!是家中獨子,死因曝光,網(wǎng)友:名字取大了

      天天熱點見聞
      2026-02-28 11:14:44
      伊朗緊急致電沙特、阿聯(lián)酋、卡塔爾、科威特、巴林、伊拉克

      伊朗緊急致電沙特、阿聯(lián)酋、卡塔爾、科威特、巴林、伊拉克

      財聯(lián)社
      2026-02-28 21:40:35
      塵埃落定!廣東總商會副會長被終身監(jiān)禁,101億贓款全部沒收

      塵埃落定!廣東總商會副會長被終身監(jiān)禁,101億贓款全部沒收

      壹只灰鴿子
      2026-02-17 22:45:09
      伊朗外交部說遇襲小學150至160人死亡

      伊朗外交部說遇襲小學150至160人死亡

      新華社
      2026-03-01 00:14:05
      2026-03-01 00:59:00
      51Testing軟件測試網(wǎng) incentive-icons
      51Testing軟件測試網(wǎng)
      中國軟件測試人的精神家園
      1528文章數(shù) 13252關注度
      往期回顧 全部

      科技要聞

      狂攬1100億美元!OpenAI再創(chuàng)融資神話

      頭條要聞

      媒體:美以的真實目標已經(jīng)擺上臺面 不達目的不罷休

      頭條要聞

      媒體:美以的真實目標已經(jīng)擺上臺面 不達目的不罷休

      體育要聞

      球隊主力全報銷?頂風擺爛演都不演了

      娛樂要聞

      周杰倫兒子正面照曝光,與父親好像

      財經(jīng)要聞

      沖突爆發(fā) 市場變天?

      汽車要聞

      嵐圖泰山黑武士版3月上市 搭載華為四激光智駕方案

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

      家居
      藝術
      數(shù)碼
      教育
      公開課

      家居要聞

      素色肌理 品意式格調(diào)

      藝術要聞

      驚艷!這位天使般的女子與油畫讓人心動不已!

      數(shù)碼要聞

      小米超薄充電寶亮相MWC,98g有多能打?

      教育要聞

      “比預估高了20多分,激動得有點想哭!”今天有人歡呼,有人沉默,有人紅了眼眶,這一年都經(jīng)歷了什么?

      公開課

      李玫瑾:為什么性格比能力更重要?

      無障礙瀏覽 進入關懷版