• 跳至主要內容
  • 跳至主要資訊欄
  • 跳至頁尾
  • Python應用
    • Python基礎操作
    • Web
      • Django
      • Flask
    • Chat bot
      • Line Bot
      • Telegram Bot
    • GUI
      • QT5
    • Google API
      • Google Drive
      • Google Gmail
      • Google sheet
    • 網頁技術
      • WordPress
      • HTML
      • CSS
      • JavaScript
  • 基本測試技術
    • Linux
    • 功能測試
    • 使用者測試
    • 壓力測試
    • 封包測試
    • 測試報告撰寫
    • 編寫測試用例
  • 自動化測試技術
    • API 自動化測試
      • Python API 測試
      • Postman
      • Jmeter
    • UI 自動化測試
      • AirTest
      • Appium
      • Robot Framework
      • Selenium
  • 問題跟蹤系統
    • Jira
    • Redmine
  • CI/CD
    • Git
    • Jenkins
    • Docker
    • K8S
    • Ngrok
  • 資料庫
    • MongoDB
    • MySQL
    • PostgreSQL
    • Redis
  • 伺服器
    • Heroku
    • Linode
    • Cloudways
    • GCP
    • AWS
  • 關於我
測試先生

測試先生

提供測試相關領域的技術文章以及其他軟體技術相關文章,如WordPress,Js,Css,Html,Python,Docker,Kubernetes,devops,k8s,jenkins,git,heroku,line,telegram

目前位置: 首頁 / 自動化測試技術 / UI 自動化測試 / Appium / 【自動化測試 教學】Python unittest 搭配 HTMLTestRunner_PY3 建立好看的測試報告

【自動化測試 教學】Python unittest 搭配 HTMLTestRunner_PY3 建立好看的測試報告

文章更新日期: 2022 年 4 月 19 日

分享一個本身有在使用的測試報告,個人覺得還滿好看的!

可以試試看 HTMLTestRunner_PY3 套件,簡單好上手

那要怎麼套用 HTMLTestRunner_PY3 呢?

別擔心,我會簡單的一步一步,以及搭配程式碼跟你說怎麼建立起一個好看的測試報告

內容目錄

  • GitLab 下載 HTMLTestRunner_PY3 專案
  • 本地端建立一個新的資料夾
  • 編寫 unittest 測試用例 範例一
  • 編寫 unittest 測試用例 範例二
  • 更多技術文章

GitLab 下載 HTMLTestRunner_PY3 專案

終端機上執行下方指令

$ git clone https://github.com/huilansame/HTMLTestRunner_PY3.git  # 下載 HTMLTestRunner_PY3專案

$ cd HTMLTestRunner_PY3/  # 進入到下載完的資料夾內

$ ls # 資料夾的檔案,不過我們只需要 HTMLTestRunner_PY3.py 就可以了!
 ./            ExampleReport.html  img/
 ../            HTMLTestRunner_PY3.py   test.py
 .git/            README.md
 .gitignore        init.py

本地端建立一個新的資料夾

將HTMLTestRunner_PY3.py 檔案放置到新資料夾

以及建立一個Run_test.py 檔案

資料夾結構大概會長這樣

$ ls -l
 total 96
 drwxr-xr-x   5 mark  staff    160  6 23 16:31 ./
 drwxr-xr-x@ 10 mark  staff    320  6 23 16:04 ../
 -rw-r--r--   1 mark  staff  29510  6 23 16:20 HTMLTestRunner_PY3.py
 -rw-r--r--@  1 mark  staff   1326  6 23 16:28 Run_test.py

ok 我們有了兩個檔案後,開始編寫簡單的測試用例

編寫 unittest 測試用例 範例一

我直接附上我自己簡單寫的測試程式碼,當然可以直接複製修改做為練習使用喔!

基本上都有寫上註解,可以看到每個用途是做什麼用的,此範例主要是針對所有的case去執行測試

# 檔案名稱為 Run_test.py
from HTMLTestRunner_PY3 import HTMLTestRunner
import unittest
import os

class MarkTest(unittest.TestCase):
    """
    只要class裏面 def 開頭符合 test的就會被列入到測試項目
    如果不符合就不會跑
    """

    def test1Mark(self):
        self.assertFalse(1 == 1)  # FAIL 不符合預期

    def test2Mark(self):
        self.assertFalse(1 == 2)  # PASS 符合預期

    def test3Mark(self):
        self.assertTrue(1 == 2)  # FAIL 不符合預期

    def test4Mark(self):
        self.assertTrue(3 == 3)  #  PASS 符合預期

    def test5Mark(self):
        test('测试报告.png')  # Error 錯誤


def load_all_case():
    """
    將所有符合在跟目錄底下符合 *.test.py 檔案加入到 all_case 進行回傳動作
    """
    all_case = unittest.defaultTestLoader.discover(os.getcwd() + '/', pattern="*test.py")

    return all_case


if __name__ == '__main__':

    report_title = '我是一個報告標題'
    desc = '可以敘述此報告用途是做什麼'
    report_file = 'test_report.html'


    with open(report_file, 'wb') as report:
        """
        先取得基本資訊 名稱、敘述,接著把所有測試用例跑過一輪,儲存到對應的位置。
        """
        runner = HTMLTestRunner(stream=report, title=report_title, description=desc)
        runner.run(load_all_case())

執行結果如下 F=Fail .=Pass E=Error,透過結果可以知道Fail兩例、Pass兩例、Error一例

$ python3 Run_test.py
 F.F.E
 Time Elapsed: 0:00:00.006694

這時候你的根目錄會多一個test_report.html檔案

打開後如下圖,非常淺而易懂的測試報告

截圖 2021 06 23 下午5.59.50

滑鼠移到圖表上,會告訴你有幾條 佔比多少

截圖 2021 06 23 下午5.59.58

發現有問題的錯誤,可以點擊打開錯誤訊息,查看問題點是什麼

截圖 2021 06 23 下午6.00.10

以上的程式範例是針對跑全部Case,如果你想只跑特定幾個Case可以參考下方做法

編寫 unittest 測試用例 範例二

下方程式碼範例主要是針對特定幾個你想跑的Test Case進行測試

from HTMLTestRunner_PY3 import HTMLTestRunner
import unittest
import os

class MarkTest(unittest.TestCase):
    """
    只要class裏面 def 開頭符合 test的就會被列入到測試項目
    如果不符合就不會跑
    """

    def test1Mark(self):
        self.assertFalse(1 == 1)  # FAIL 不符合預期

    def test2Mark(self):
        self.assertFalse(1 == 2)  # PASS 符合預期

    def test3Mark(self):
        self.assertTrue(1 == 2)  # FAIL 不符合預期

    def test4Mark(self):
        self.assertTrue(3 == 3)  #  PASS 符合預期

    def test5Mark(self):
        test('测试报告.png')  # Error 錯誤


if __name__ == '__main__':

    report_title = '我是一個報告標題'
    desc = '可以敘述此報告用途是做什麼'
    report_file = 'test_report.html'

    """
    針對你要執行的TestCase加入到suite內,透過.addTest()的方法
    這裡的話,只會針對test3Mark, test4Mark, test5Mark進行執行
    """
    suite = unittest.TestSuite()
    suite.addTest(MarkTest('test3Mark'))
    suite.addTest(MarkTest('test4Mark'))
    suite.addTest(MarkTest('test5Mark'))

    with open(report_file, 'wb') as report:
        """
        先取得基本資訊 名稱、敘述,接著把所有測試用例跑過一輪,儲存到對應的位置。
        """
        runner = HTMLTestRunner(stream=report, title=report_title, description=desc)
        runner.run(suite)

文章內的程式碼都可以直接複製下來練習操作,或是直接套用到自己的專案都行!

多練習,對自已會有很大的幫助!

一回生二回熟,將所學習到內容變成自己的知識。

人就是要學習自己不會的事情,這樣才會不斷的成長、進步!

更多技術文章

透過下方按鈕找尋到相關的技術文章,希望可以幫助到正在學習的你

html 教學文章
Python 教學文章
Ngrok 教學
Jenkins 教學
WordPress 教學
Chatbot 教學

加入到我的粉絲專頁,不定期發布最新文章資訊!
有任何文章問題都可以詢問喔!

測試先生

文章分類: Appium 文章標籤: defaultTestLoader, discover, htmltestrunner, python unittest © 2021–2022

主要資訊欄

  • 電子郵件
  • Facebook
  • GitHub
  • LinkedIn
  • GitLab 下載 HTMLTestRunner_PY3 專案
  • 本地端建立一個新的資料夾
  • 編寫 unittest 測試用例 範例一
  • 編寫 unittest 測試用例 範例二
  • 更多技術文章

Footer

  • 隱私權政策
  • 免責聲明與使用條款
  • 聯絡我們
  • 電子郵件
  • Facebook
  • GitHub
  • LinkedIn

Copyright © 2022 · Magazine Pro on Genesis Framework · WordPress · 登入