Python單元測試報告框架
- 2019 年 10 月 4 日
- 筆記
如果你是Java棧的同學,那麼你可能知道extent report測試報告框架。而Python你可能知道HTMLTestRunner測試報告框架。今天要介紹的則是基於HTMLTestRunner的新測試報告框架PyTestReport。
如果Python語言界已經有了HTMLTestRunner
,那麼為什麼還要一個PyTestReport
測試框架呢?
原因很簡單,因為與Extent Report
框架相比,HTMLTestRunner
在介面的優越性上面還是有不少的差距,而PyTestReport
則意在成為Python語言中的Extent Report
。
開局一張圖

這個就是PyTestReport
的默認主題模板,雖然看上去跟Extent Report
的眾多模組相比,還是稍有遜色顯得不是很專業。
但是這並不影響我們介紹這款框架,因為它在基於HTMLTestRunner
進行改良之後開始支援模板擴展了,也就是說將來它可以擁有和Extent Report
同步樣式的報告模板。
所以如果你對此框架還有興趣,就一起來看下如果快速的使用和擴展該框架的主題模板。
如果你具有較好的CSS功底,那麼歡迎來為我們的主題模板舔磚加瓦^_^!開源合作相關請點擊PyTestReport的github地址[1]查看詳情。
安裝
通過pip安裝
pip install PyTestReport
通過安裝包
可通過發布的安裝包進行安裝,具體安裝包可在dist目錄查找。
pip install PyTestReport-0.1.X-py3-none-any.whl
通過源碼(最新版本)
pip install git+https://github.com/five3/PyTestReport.git
或者
git clone https://github.com/five3/PyTestReport.git cd PyTestReport python setup.py build python setup.py install
使用
PyTestReport可用通過多種方式運行,分別如下:
•單元測試•lib庫引入(後續支援)•命令行(後續支援)•REST API(後續支援)
單元測試使用樣例
import unittest import pytestreport class MyTest(unittest.TestCase): def testTrue(self): self.assertTrue(True) if __name__ == '__main__': pytestreport.main(verbosity=2)
以這種方式執行之後,默認會在當前文件夾下生成一個PyTestReport.html
日誌文件,且這個文件名和樣式模板都不可以重新指定的。
注意:這種方式執行時,如果使用Pycharm等IDE,確保不是以IDE的內建單元測試框架來執行的;或者直接通過命令行來執行。
import unittest from pytestreport import TestRunner class MyTest(unittest.TestCase): def testTrue(self): self.assertTrue(True) if __name__ == '__main__': suite = unittest.TestSuite() suite.addTests(unittest.TestLoader().loadTestsFromTestCase(MyTest)) with open(r'/path/to/report.html', 'wb') as fp: runner = TestRunner(fp, title='測試標題', description='測試描述', verbosity=2) runner.run(suite)
這種方式適合批量載入和執行測試用例,從測試文件的外部來導入測試用例並執行。這裡可以指定具體的結果文件路徑和測試標識等資訊。
這裡使用的是默認模板主題,如果想要使用其它模板主題,可以通過制定模板的主題文件來實現。比如:使用遺留模板的方式如下所示。
from pytestreport import TestRunner ... runner = TestRunner(fp, title='測試標題', description='測試描述', verbosity=2, htmltemplate='legency.html', stylesheet='legency.css', javascript='legency.js')