unittest---unittest生成測試報告

  我們做測試的人員們都知道測試完成後,肯定是會生成一個測試報告,那麼當我們做自動化的時候,這個自動化報告也可以自動生成嗎?python當然可以了!

HTMLTestRunner

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

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

下載完成後直接放到我們代碼文件夾中,也可以放在其他地方,只要我們用的時候,可以直接調用就OK

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

# 輸出到文件
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)

當然了我們只用這麼多就可以生成報告了。

小試牛刀

話不多說,直接就是幹,不過寫之前我們先理下思路:

1、在unittest中編寫測試用例

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

# 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()

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

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

# 當前文件夾路徑
    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'用例執行情況:')

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

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

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

4、當然是趕快執行查看報告內容啊

通過用例,我們可以看到這裏已經完全生成報告了。

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

當然肯定有的小夥伴們會說,這裏不能看到通過的用例都是哪些?這個地方可以解決嗎? 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如何生成測試報告,如果哪裏有不懂的或者不清楚的可以下方留言,看到後第一時間回覆~~~共同進步,共同學習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章