分享一個本身有在使用的測試報告,個人覺得還滿好看的!
可以試試看 HTMLTestRunner_PY3 套件,簡單好上手
那要怎麼套用 HTMLTestRunner_PY3 呢?
別擔心,我會簡單的一步一步,以及搭配程式碼跟你說怎麼建立起一個好看的測試報告
內容目錄
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檔案
打開後如下圖,非常淺而易懂的測試報告

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

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

以上的程式範例是針對跑全部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)
文章內的程式碼都可以直接複製下來練習操作,或是直接套用到自己的專案都行!
多練習,對自已會有很大的幫助!
一回生二回熟,將所學習到內容變成自己的知識。
人就是要學習自己不會的事情,這樣才會不斷的成長、進步!
更多技術文章
透過下方按鈕找尋到相關的技術文章,希望可以幫助到正在學習的你
加入到我的粉絲專頁,不定期發布最新文章資訊!
有任何文章問題都可以詢問喔!