unittest生成測試報告

1.把測試案例的結果寫入文件

  • 在測試套件中,修改用於執行測試用例集的runner,增長一個上下文管理器with語句,例如:with open('文件名', 'w+') as f,其中f表示一個流對象,而後把流對象加入TextTestRunner類的參數stream中,例如:runner = TextTestRunner(stream=f),而後運行,項目中就能生成一個文件,文件中的內容就是測試用例打印出的內容;
from test1 import MyTestCase
from unittest import TestSuite, TextTestRunner

suite = TestSuite()
# 在測試用例集中添加測試用例
suite.addTest(MyTestCase('test_print1'))
suite.addTest(MyTestCase('test_print2'))
suite.addTest(MyTestCase('test_print3'))

if __name__ == '__main__':
    # 建立測試runner,執行測試用例集
    with open('html_result1', 'w+') as f:
        runner = TextTestRunner(stream=f, verbosity=2)
        runner.run(suite)

2.使用html-testRunner模塊將測試結果寫入HTML頁面

  • HtmlTest runner是一個單元測試運行器,能夠將測試結果保存在Html文件中。首先須要安裝模塊:pip install html-testRunner,安裝後調用時顯示爲HtmlTestRunner;html

  • 使用時須要導入HtmlTestRunner中的HTMLTestRunner類;瀏覽器

  • 再將測試中的TextTestRunner類替換成HTMLTestRunner類,這裏須要注意一下HTMLTestRunner自帶的參數,output表示結果保存到哪裏、verbosity顯示用例打印內容、stream表示標準輸出、report_name文件名、report_title標題、descriptions描述等。而後直接運行,就會在html中生成一個html文件,若是再次運行會生成一個新的html文件;單元測試

from test import MyTestCase
from unittest import TestSuite, TextTestRunner
import HtmlTestRunner

suite = TestSuite()
# 在測試用例集中添加測試用例
suite.addTest(MyTestCase('test_print1'))
suite.addTest(MyTestCase('test_print2'))
suite.addTest(MyTestCase('test_print3'))

if __name__ == '__main__':
    # 建立測試runner,執行測試用例集
    # runner = TextTestRunner()
    with open('html_result', 'w+') as f:
        runner = HtmlTestRunner.HTMLTestRunner(output='./', stream=f, report_title='測試報告', descriptions='測試報告詳情')
        runner.run(suite)

咱們來看一下在瀏覽器中HTML頁面效果,這個測試報告都有說明的,好比說測試用例的Total總數是三、Pass經過的測試用例數量是二、Skip跳過的測試用例數量是1測試

3.unittest實現自動發現

咱們能夠使用unittest.defaultTestLoader類中的discover()方法實現自動根據測試目錄start_dir匹配查找測試用例文件,並將查找到的測試用例組裝到測試套件,而後經過run()方法執行discoverui

from unittest import TextTestRunner, defaultTestLoader

start_dir = './'
discover = defaultTestLoader.discover(start_dir=start_dir, pattern=r'test*.py')
if __name__ == '__main__':
    # 建立測試runner,執行測試用例集
    with open('html_result1', 'w+') as f:
        runner = TextTestRunner(stream=f, verbosity=2)
        runner.run(discover)

參考:https://www.9xkd.com/user/plan-view.html?id=1914210302code

相關文章
相關標籤/搜索