標籤:hot 按鈕 stc 1.7 指令碼 架構 self 入門 desire
最近工作中想要做自動化迴歸測試,想法是將每個測試案例都做自動,然後將最近的穩定版本和當前測試的版本的兩張去對比,也要將兩個版本的都放到測試報告中方便人工來進行驗證。最初想法是通過HTMLTestRunner產生帶的測試報告,但是HTMLTestRunner本身沒有功能,還有它不支援python 3,所以另外找了其他的工具來做這件事。
產生測試報告工具簡介
HtmlTestRunner是將單元測試的結果儲存為html格式的測試報告的工具,這個工具的功能和HTMLTestRunner很想,而且名稱也很像。但是它支援python3,而且產生的報告的樣式更加美觀。
安裝HtmlTestRunner
訪問這個url:
https://pypi.python.org/pypi/html-testRunner/1.0.3
然後下載html_testRunner-1.0.3-py2.py3-none-any.whl檔案,接下來通過下面命令(適用於ubuntu等linux系統)來安裝:
$ sudo pip3 install html_testRunner-1.0.3-py2.py3-none-any.whl
如果你是windows系統,嘗試使用下面命令安裝:
$ pip install html_testRunner-1.0.3-py2.py3-none-any.whl
添加功能
HtmlTestRunner這個工具,本身沒有展示的功能,不過可以通過修改它的template檔案來添加功能。
通過下面地址,下載HtmlTestRunner的原始碼到本地:
https://github.com/oldani/HtmlTestRunner
用編輯器開啟HtmlTestRunner/template/report_template.html檔案,進行修改:
需要刪除中標紅色的代碼,並新增綠色的代碼。注意將新增圖片的目錄設定為自己本地的儲存的目錄。
產生自動化測試報告
使用python的appium API和unittest單元測試架構,再加上上面提到的HtmlTestRunner第三方模組,可以產生帶測試的測試報告。具體代碼如下:
#!/usr/bin/env python3# coding=utf-8from appium import webdriverfrom nose.tools import *import unittestimport HtmlTestRunner #產生HTML格式的測試報告class take_screen_shot(): #這個類將在下面作為裝飾器使用 def __init__(self, func): self.func = func self.name = func.__name__ + ‘ (__main__.CalTestCase).png‘ #拼接檔案名稱 def __call__(self, *args): #對每次調用的函數都做操作 try: self.func(self, *args) finally: driver.get_screenshot_as_file(self.name) class CalTestCase(unittest.TestCase): @classmethod def setUpClass(self): desired_caps = {} desired_caps[‘platformName‘] = ‘Android‘ #設定作業平台 desired_caps[‘platformVersion‘] = ‘5.1.1‘ #作業系統版本 desired_caps[‘deviceName‘] = ‘Nexus 4‘ #裝置名稱 desired_caps[‘appPackage‘] = ‘com.android.calculator2‘ desired_caps[‘appActivity‘] = ‘.Calculator‘ desired_caps[‘udid‘] = ‘04c5a5af52197902‘ global driver driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps) @classmethod def tearDownClass(self): driver.quit() #退出當前應用 @take_screen_shot #對每一條測試案例使用裝飾器 def test_case_01(self): text = driver.find_element_by_id(‘com.android.calculator2:id/formula‘).text assert_equal(text, "") @take_screen_shot def test_case_02(self): driver.find_element_by_id(‘com.android.calculator2:id/digit_1‘).click() #點擊數字鍵1 driver.find_element_by_id(‘com.android.calculator2:id/op_add‘).click() #點擊加號 driver.find_element_by_id(‘com.android.calculator2:id/digit_1‘).click() #點擊數字鍵1 driver.find_element_by_id(‘com.android.calculator2:id/eq‘).click() #點擊等號 text = driver.find_element_by_id(‘com.android.calculator2:id/formula‘).text assert_equal(text, "2") if __name__ == ‘__main__‘: #下面語句用來產生測試報告 unittest.main(testRunner=HtmlTestRunner.HTMLTestRunner(output=‘cal_report‘, report_title=‘Android計算機測試報告‘))
程式碼分析:因為計劃每個測試案例都進行操作,所以使用了python的裝飾器。這樣就實現了每個測試案例執行之後不管是成功還是失敗都進行操作,代碼的最後使用HtmlTestRunner工具產生測試報告。
接下來使用下面命令執行測試:
$ python3 appium_deom.pyRunning tests... ---------------------------------------------------------------------- test_case_01 (__main__.CalTestCase) ... OK (1.786675)s test_case_02 (__main__.CalTestCase) ... OK (5.081634)s----------------------------------------------------------------------Ran 2 tests in 0:00:OKGenerating HTML reports...
產生的測試報告的位置在測試指令碼所在的目錄下的reports目錄下,通過瀏覽器查看,結果如下:
點擊view按鈕可以展開查看和錯誤資訊:
接下來想要做的
現在的測試報告的html模板中的還是寫死的路徑,如果能將的路徑也能自動產生的話就更好了。
還有現在沒有進行兩個版本的對比,考慮繼續尋找工具做的對比,並突出或標記上兩張圖片不相同的地方。
轉載來源
Mobile Testing之appium+python 入門代碼(四)