1. 程式人生 > >Appium+Python之生成html測試報告

Appium+Python之生成html測試報告

思考:測試用例執行後,如何生成一個直觀漂亮的測試報告呢?

分析1.unittest單元測試框架本身帶有一個textTestRunner類,可以生成txt文字格式的測試報告,但是頁面不夠直觀

           2.我們可以匯入第三方庫,比如常用的HTMLTestRunner類,可以生成html格式測試報告

   3.首先去下載HTMLTestRunner_PY3.py指令碼(我這裡採用Python3.7),然後放置在Python3.7路徑下的Lib目錄下,使用時需要匯入(即import  HTMLTestRunner_PY3)

程式碼示例如下:

if __name__ == "__main__":
    #例項化測試套件
     suite = unittest.TestSuite()
     #載入測試用例
     suite.addTest(TestCase("test_login"))
    #生成測試報告
    # 選擇指定時間格式
    timestr = time.strftime('%Y-%m-%d%H%M%S', time.localtime(time.time()))
    # 定義測試報告存放路徑和報告名稱
    Report = os.path.join(
        PATH(
'E://testing_code/code/SmartSiteTestScript/report/test_report_') + timestr + '.html') with open(Report, 'wb') as f: runner = HTMLTestRunner_PY3.HTMLTestRunner(stream=f,
verbosity
=2,
title='
XXXX自動化測試報告',
description='執行人:丹姐')
runner.run(suite)

# 關閉測試報告
f.close()

解析:

1.在測試報告名中顯示時間:(引入time包)  timestr=time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))

time.time():獲取當前時間戳

time.ctime():獲取當前時間的字串

time.localtime():當前時間的struct_time形式

time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime()):獲取特定格式的時間,通常用這個

2.TestSuite是個容器,往裡面用addTest()新增測試用例

3.Report定義報告儲存的路徑以及檔名

open() 函式用於開啟一個檔案,建立一個 file 物件,相關的方法才可以呼叫它進行讀寫

語法:open(name[, mode[, buffering]])

  • name : 一個包含了你要訪問的檔名稱的字串值
  • mode : mode 決定了開啟檔案的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個引數是非強制的,預設檔案訪問模式為只讀(r)
  • buffering : 如果 buffering 的值被設為 0,就不會有寄存。如果 buffering 的值取 1,訪問檔案時會寄存行。如果將 buffering 的值設為大於 1 的整數,表明了這就是的寄存區的緩衝大小。如果取負值,寄存區的緩衝大小則為系統預設

這裡常用的為 open(Report,'wb'):以二進位制形式開啟檔案Report

4.runner定義測試報告格式stream定義報告寫入的二進位制檔案,title為報告的標題,description為報告的說明,runner.run()用來執行測試case,注意最後用f.close()將檔案關閉!

verbosity表示測試結果的資訊複雜度,有三個值

  • 0 (靜默模式): 你只能獲得總的測試用例數和總的結果 比如 總共100個 失敗20 成功80
  • 1 (預設模式): 非常類似靜默模式 只是在每個成功的用例前面有個“.” 每個失敗的用例前面有個 “F”
  • 2 (詳細模式):測試結果會顯示每個測試用例的所有相關的資訊

測試報告效果圖如下所示: