用例執行完成后,執行結果默認是輸出在屏幕上,其實我們可以把結果輸出到一個文件中,形成測試報告。
unittest自帶的測試報告是文本形式的,如下代碼:
import unittest if __name__ == "__main__": # 測試用例目錄 test_dir = r"D:\Git\Test_Framework\test_case" # 加載測試用例 discover = unittest.defaultTestLoader.discover(test_dir, 'test*.py') # 測試報告路徑 report_path = r"D:\Git\Test_Framework\report\report.text" with open(report_path,"a") as report: runner = unittest.TextTestRunner(stream=report,verbosity=2) runner.run(discover)
生成的txt測試報告如下:
這種TXT文件測試報告不能直觀地展示用例執行情況,引入第三方模塊HTMLTestRunner,可以展示一份優美的html格式的測試報告。
下面我們就來介紹下HTMLTestRunner模塊
HTMLTestRunner模塊不能通過pip安裝,必須先下載下來下載地址:http://tungwaiyip.info/software/HTMLTestRunner.html
直接右鍵另存為就行了,下載完成后放到python安裝目錄下的../Python36\Lib
因為HTMLTestRunner模塊是基於Python2開發的,目前停止更新了,在Python3上運行會報錯。為了使其支持Python3環境,需要對其中的部分內容進行修改:
第94行,將import StringIO修改成import io
第539行,將self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer= io.StringIO()
第631行,將print >> sys.stderr, ‘\nTime Elapsed: %s‘ %(self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTimeElapsed: %s‘ % (self.stopTime-self.startTime))
第642行,將if not rmap.has_key(cls):修改成if notcls in rmap:
第766行,將uo = o.decode(‘latin-1‘)修改成uo = e
第775行,將ue = e.decode(‘latin-1‘)修改成ue = e
修改完成后保存。
現在我們就可以生成一份優美的測試報告了
代碼:
import unittest from HTMLTestRunner import HTMLTestRunner if __name__ == "__main__": # 測試用例目錄 test_dir = r"D:\Git\Test_Framework\test_case" # 加載測試用例 discover = unittest.defaultTestLoader.discover(test_dir, 'test*.py') # 測試報告路徑 report_path = r"D:\Git\Test_Framework\report\report.html" with open(report_path,"wb") as report: runner = HTMLTestRunner(stream = report, title = "測試報告", description = "系統登錄測試用例執行") runner.run(discover)