使用 HTMLTestRunner 自動(dòng)生成測(cè)試報(bào)告

在做自動(dòng)化測(cè)試時(shí),我們通常希望以可視化的形式來展示測(cè)試結(jié)果,這時(shí)候 HTMLTestRunner 就有很大的用武之地了。它是 Python 標(biāo)準(zhǔn)庫中 unittest 模塊的一個(gè)擴(kuò)展,可用于生成 HTML 測(cè)試報(bào)告。
1
配置? HTMLTestRunner
雖然 HTMLTestRunner 很強(qiáng)大,但有個(gè)小問題,它是基于 Python2 的,所以無法直接在 Python3 中直接使用(網(wǎng)上下載的很多都用不了)。
那就升級(jí)一下吧,由于文件內(nèi)容過多,所以就不直接貼代碼了,點(diǎn)擊下面的鏈接直接下載(已驗(yàn)證通過,可直接使用):
戳我:https://github.com/Waleon/HTMLTestRunner
下載 HTMLTestRunner.py 之后,將其拷貝至 Python 的安裝目錄下,例如:/usr/local/lib/python3.7/dist-packages/,然后就可以使用了。
2
測(cè)試腳本
編寫一個(gè)簡單的示例腳本 - autotest.py,看是否能自動(dòng)生成測(cè)試報(bào)告:
#!/usr/bin/env?python3
#?-*-?coding:?utf-8?-*-
import?unittest
import?HTMLTestRunner
import?time
class?TestDemo(unittest.TestCase):
????"""測(cè)試用例"""
????def?setUp(self):
????????print('==========?begin?==========')
????def?test_success(self):
????????self.assertEqual(1?+?1,?2)
????def?test_fail(self):
????????self.assertEqual(1?+?1,?10)
????def?test_error(self):
????????self.assertEqual(x,?1024)
????def?tearDown(self):
????????print('==========?end?==========')
if?__name__?==?'__main__':
????#?構(gòu)造測(cè)試集
????suite?=?unittest.TestSuite()
????#?添加測(cè)試用例
????suite.addTest(TestDemo("test_success"))
????suite.addTest(TestDemo("test_fail"))
????suite.addTest(TestDemo("test_error"))
????#?報(bào)告路徑
????date_time?=?time.strftime('%Y%m%d%H%M%S',?time.localtime(time.time()))
????report_abspath?=?'report_'?+?date_time?+?'.html'
????#?執(zhí)行測(cè)試
????with?open(report_abspath,?'wb')?as?f:
????????runner?=?HTMLTestRunner.HTMLTestRunner(
????????????stream=f,
????????????title='TestDemo?unit?test',
????????????description='TestDemo?report?output?by?HTMLTestRunner.'
????????)
????????runner.run(suite)
3
驗(yàn)證一下
執(zhí)行腳本,進(jìn)行驗(yàn)證:
$?python3?autotest.py
不出意外,這時(shí)會(huì)生成一個(gè)后綴為 .html 的文件,這就是我們的測(cè)試報(bào)告,打開來看看:

像標(biāo)題、描述、日期等基本信息都有,當(dāng)然執(zhí)行的用例也少不了,一共有 3 條,一條成功,一條失敗,一條錯(cuò)誤。
如果要查看對(duì)應(yīng)用例的詳細(xì)信息,可以點(diǎn)擊藍(lán)色的超鏈接按鈕,尤其在有失敗和錯(cuò)誤的情況下,這個(gè)功能非常好用,能幫助我們快速定位問題!
·END·

