unittest---unittest生成測試報告

  咱們作測試的人員們都知道測試完成後,確定是會生成一個測試報告,那麼當咱們作自動化的時候,這個自動化報告也能夠自動生成嗎?python固然能夠了!html

HTMLTestRunner

HTMLTestRunner是Python標準庫的unittest模塊的擴展。它生成易於使用的HTML測試報告。python

下載地址:http://tungwaiyip.info/software/HTMLTestRunner.htmljson

下載完成後直接放到咱們代碼文件夾中,也能夠放在其餘地方,只要咱們用的時候,能夠直接調用就OKapi

下載下來後能夠先看下其中代碼,可否找到一些簡單的使用方法。(因爲文件過大,這裏我只呈現了部分咱們須要用到的代碼內容)post

# 輸出到文件
fp = file('my_report.html', 'wb')
runner = HTMLTestRunner.HTMLTestRunner(
                stream=fp,
                title='My unit test',
                description='This demonstrates the report output by HTMLTestRunner.'
                )

    # 使用外部樣式表。
    # 運行測試
runner.run(my_test_suite)

固然了咱們只用這麼多就能夠生成報告了。學習

小試牛刀

話很少說,直接就是幹,不過寫以前咱們先理下思路:測試

一、在unittest中編寫測試用例

這裏我仍是直接調用前面寫的通用代碼了ui

# coding:utf-8
import unittest
import requests

class   Music(unittest.TestCase):
    def select(self,name):
        url = 'https://api.apiopen.top/searchMusic'
        data = {
             "name":name
        }
        r = requests.post(url,data=data)
        b = r.json()['result'][0]['title']
        return b

    def test01(self):
        b = '斷橋殘雪'
        a = self.select(b)
        self.assertEqual(b,a)
        print('這個是用例一')

    def test02(self):
        a = '說好不哭'
        b = self.select(a)
        self.assertEqual(a,b)
        print('這個是用例二')

    def test03(self):
        a = '芒種'
        b = self.select(a)
        self.assertEqual(a,b)
        print('這個是用例三')

if __name__ == '__main__':
        unittest.main()

二、添加報告路徑已經報告內容

經過os模塊進行找到當前文件夾,使報告生成當前文件夾中url

  # 當前文件夾路徑
    report_path = os.path.dirname(os.path.realpath(__file__))
    # 測試報告地址
    report_abspath = os.path.join(report_path, "result.html")
    fp = open(report_abspath, "wb")
     # 報告詳情
    runner = HTMLTestRunner_cn.HTMLTestRunner(stream=fp,
                                           title=u'自動化測試報告,測試結果以下:',
                                           description=u'用例執行狀況:')

三、批量執行用例,導入測試報告內容中

經過unittest中執行用例的方法,來批量執行用例spa

  # 實例化
    testunit  = unittest.TestSuite()  
    # 加載用例
    testunit .addTests(unittest.TestLoader().loadTestsFromTestCase(Music))  
    # 執行用例
    runner.run(testunit)

四、固然是趕快執行查看報告內容啊

經過用例,咱們能夠看到這裏已經徹底生成報告了。

四、添加用例註釋,增長報告完整性

固然確定有的小夥伴們會說,這裏不能看到經過的用例都是哪些?這個地方能夠解決嗎? python這麼強大,這個確定能夠解決啊。不過須要咱們在用例中添加註釋。這樣的話就會生成了詳細內容。所有代碼以下(添加註釋後)

# coding:utf-8
import unittest
import requests
import os
from case import HTMLTestRunner_cn

class   Music(unittest.TestCase):
    def select(self,name):
        url = 'https://api.apiopen.top/searchMusic'
        data = {
             "name":name
        }
        r = requests.post(url,data=data)
        b = r.json()['result'][0]['title']
        return b

    def test01(self):
        '''
        歌名:斷橋殘雪
        '''
        b = '斷橋殘雪'
        a = self.select(b)
        self.assertEqual(b,a)
        print('這個是用例一')

    def test02(self):
        '''
        歌名:說好不哭
        '''
        a = '說好不哭'
        b = self.select(a)
        self.assertEqual(a,b)
        print('這個是用例二')

    def test03(self):
        '''
        歌名:芒種
        '''
        a = '芒種'
        b = self.select(a)
        self.assertEqual(a,b)
        print('這個是用例三')

if __name__ == '__main__':
    # 當前文件夾路徑
    report_path = os.path.dirname(os.path.realpath(__file__))
    # 測試報告地址
    report_abspath = os.path.join(report_path, "result.html")
    fp = open(report_abspath, "wb")
     # 報告詳情
    runner = HTMLTestRunner_cn.HTMLTestRunner(stream=fp,
                                           title=u'自動化測試報告,測試結果以下:',
                                           description=u'用例執行狀況:')
    # 實例化
    testunit  = unittest.TestSuite()
    # 加載用例
    testunit .addTests(unittest.TestLoader().loadTestsFromTestCase(Music))
    # 執行用例
    runner.run(testunit)
    # 關閉報告
    fp.close()

懷着小小的激動去查看了生成的報告,果真沒有令我失望,已經完成展示出來了~~

 

 這一篇安靜主要介紹了unittest如何生成測試報告,若是哪裏有不懂的或者不清楚的能夠下方留言,看到後第一時間回覆~~~共同進步,共同窗習

相關文章
相關標籤/搜索