国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

appium2-基于python調用unittest框架對iOS進行自動化測試

2019-11-09 17:51:27
字體:
來源:轉載
供稿:網友

appium2-基于python調用unittest框架對iOS進行自動化測試

緊急上篇的 appium1-macOS10.12下如何絲滑的使用appium? 我相信環境問題已經解決完畢,雖然下載demo并且體驗了一次完整的自動化流程,但是有太多的疑問在后面等著我們。這里我總結了一下自動化測試代碼一些說明,比如關鍵字及輸出結果等等,這是一條漫漫長路,需要耐心細心。

先來幾篇優秀的文章開開胃:

Python單元測試——深入理解unittest

Unit testing framework

Appium Python API 中文版 By-HZJ

Appium 中文 Appium API 文檔

XPath 教程

1、首先了解一下幾個重要的概念:test fixture , test case , test suite , test runner

一個TestCase的實例就是一個測試用例。什么是測試用例呢?就是一個完整的測試流程,包括測試前準備環境的搭建(setUp),執行測試代碼(run),以及測試后環境的還原(tearDown)。元測試(unit test)的本質也就在這里,一個測試用例是一個完整的測試單元,通過運行這個測試單元,可以對某一個問題進行驗證。而多個測試用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。TestLoader是用來加載TestCase到TestSuite中的,其中有幾個loadTestsFrom__()方法,就是從各個地方尋找TestCase,創建它們的實例,然后add到TestSuite中,再返回一個TestSuite實例。TextTestRunner是來執行測試用例的,其中的run(test)會執行TestSuite/TestCase中的run(result)方法。測試的結果會保存到TextTestResult實例中,包括運行了多少測試用例,成功了多少,失敗了多少等信息。

下面從代碼進行說明,具體可以看代碼注釋:

import unittestimport osfrom appium import webdriverfrom time import sleepimport timeimport HTMLTestRunner #導入HTMLTestRunner.py進行輸出結果,后文有介紹說明# SimpleIOSTests 繼承自 unittest.TestCase,該類中只包含了 test_scroll 一個測試用例class SimpleIOSTests(unittest.TestCase): # 重寫setUp()方法,設置自動化測試的一些基本參數 def setUp(self): app = os.path.abspath('../../apps/HHH/build/Release-數據庫中產生的數據,然后關閉連接。注意tearDown的過程很重要,要為以后的TestCase留下一個干凈的環境 def tearDown(self): self.driver.quit() # 測試用例,以test開頭 def test_scroll(self): # 找到 accessibility_id 為 "button" 的控件執行 點擊操作 self.driver.find_element_by_accessibility_id('button').click() sleep(1) # 找到 值為 "HHH" 的控件 textF1 = self.driver.find_element_by_name('HHH') 除了看上面推薦的一些鏈接外,也可以在自己電腦中找到一些說明,比如在我自己電腦中 /Library/Python/2.7/site-packages/selenium-3.0.2-py2.7.egg/selenium/webdriver/remote/webdriver.py 可以看到一些說明:

def find_element_by_tag_name(self, name): """ Finds an element by tag name. :Args: - name: The tag name of the element to find. :Usage: driver.find_element_by_tag_name('foo') """ return self.find_element(by=By.TAG_NAME, value=name) def find_elements_by_tag_name(self, name): """ Finds elements by tag name. :Args: - name: The tag name the use when finding elements. :Usage: driver.find_elements_by_tag_name('foo') """ return self.find_elements(by=By.TAG_NAME, value=name) def find_element_by_class_name(self, name): """ Finds an element by class name. :Args: - name: The class name of the element to find. :Usage: driver.find_element_by_class_name('foo') """ return self.find_element(by=By.CLASS_NAME, value=name)

2、輸出測試結果:

先安裝HTMLTestRunner,可以去 官網下載 (不要直接復制代碼然后拷貝生成 HTMLTestRunner.py , 會有格式問題,可以選擇 文件-存儲為 下載到本地),當然也可以直接從 erduoniba/appium_ios_sample_code 下載獲得。 然后將 HTMLTestRunner.py 拷貝到 /Library/Python/2.7/site-packages/ 下即可。

if __name__ == '__main__': 改成如下代碼,再次執行 自動化測試

if __name__ == '__main__': suite = unittest.TestLoader().loadTestsFromTestCase(SimpleIOSTests) # 生成此刻的時間 timestr = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())) # 輸出文件 filename = "/Users/denglibing/Desktop/appiumresult" + timestr + ".html" print(filename) fp = open(filename, 'wb') runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title='testresult', description='testreport' ) runner.run(suite) fp.close()

成功之后會在 /Users/denglibing/Desktop/ 生成對應的 appiumresult.html ,打開得到測試結果:

一些使用過程的小細節:

1: 如果app已經安裝了,在不想安裝app的情況下, 可通過dos窗口,通過啟動appium帶上 --no-reset 即可避免執行用例的時候再次安裝app2: appium默認啟動一個應用的
session過期時間是60秒到時間會自動停了剛啟動的應用appium --command-timeout 600 時間變成600秒了
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盘山县| 印江| 新巴尔虎右旗| 康马县| 休宁县| 龙海市| 长武县| 崇文区| 锦屏县| 南澳县| 方城县| 吉水县| 阿拉善左旗| 台南县| 高台县| 武隆县| 台中县| 建宁县| 雅江县| 徐水县| 吉木萨尔县| 鄢陵县| 伊宁县| 连江县| 林芝县| 独山县| 蓬溪县| 辰溪县| 博爱县| 开江县| 资兴市| 桑植县| 南阳市| 壶关县| 巴青县| 江都市| 富平县| 靖州| 枞阳县| 云阳县| 德格县|