1、python學習環境:python3.5,python3的環境需要修改HTMLTestRunner.py 文件中的部分代碼。若是在python2.7環境下就直接到HTMLTestRunner 官網上下載即可,不需做任何修改。
IDE:pycharm
2
、HTMLTestRunner原理:代替unittest的TextTestRunner功能,使測試結果以測試報告的方式展示,方便查看。
3、HTMLTestRunner.py文件的結構:
class OutputRedirector(object) # 將輸出進行重定向 class Template_mixin(object) # 定義生成HTML結果文件所需要的模板。 # 如果我們想改變HTML的格式等待,可以在這里進行改動 class _TestResult(TestResult) # 定義繼承自 unittest.TestResult 的 類。 # 這里重寫了 unittest.TestResult 的多個方法,比如 startTest(self, test) 等等 class HTMLTestRunner(Template_mixin) # 這里可以說是使用 HTMLTestRunner.py 的入口。定義了多個我們可以看到的方法,比如 run(self, test) class TestProgram(unittest.TestProgram) # 這里繼承自 unittest.TestProgram 類,重寫了 runTests 方法。 # 用於命令行執行測試
4、步驟:A、將HTMLTestRunner放入F:\python\Lib目錄中,在pycharm中import一下看是否成功;B、main函數中的寫法
if __name__ == '__main__': cases_MyTestCase = unittest.TestLoader().loadTestsFromTestCase(MyTestCase) cases_my_testRunner = unittest.TestLoader().loadTestsFromTestCase(my_testRunner.TestOne) suite = unittest.TestSuite([cases_MyTestCase, cases_my_testRunner]) suite.addTest(my_testRunner.TestOne('test_2')) now = time.strftime('%Y-%m-%d_%H-%M-%S', time.localtime(time.time())) fp = open(now + 'Result.html', 'wb') runner = HTMLTestRunner.HTMLTestRunner(stream=fp, verbosity=2, title='Test Report', description=u'Result:') runner.run(suite) print(now) fp.close()
5、學習過程中遇到的坑:
A、直接點右鍵運行結束后沒有報異常,但就是沒有生成測試報告,為什么?
原因:點右鍵運行或點右上角的運行按鈕或ctrl+shift+F10都運行的是編譯器自帶的unittest in xxx.py,所以需要按Alt+shift+F10,選擇xxx來運行,這樣就是從自己的main入口開始執行
B、時間的模板需要用下划線或橫杠,加空格或冒號時編譯器就會報錯
C、測試報告生成了,但是打開是空的,這是為什么?
若打開文件沒有使用with方法,則需要在最后調用fp.close()函數將文件關閉,這樣才會寫入最后的測試結果。