1. 程式人生 > >appium實現功能自動化測試

appium實現功能自動化測試

從來自己沒寫過部落格,這一篇我就介紹一下自己搭建appium環境和實現持續整合測試過程中踩過的坑吧。

提到持續整合,我個人的理解可能比較淺薄,目前在我們的專案組裡能實現的是在安卓和IOS分別將程式碼提交到SVN以後,使用jenkins定時執行把程式碼撈下來,然後分別打包(悲劇的是IOS自動打包還沒有實現),完成Debug模擬器的包之後,在每天的早晨定時執行基於appium框架寫的指令碼,這樣跑完指令碼之後,以郵件的形式把測試執行結果發出來,實現功能測試的持續整合。

1、首先需要提到的是安裝appium測試框架

在mac環境搭建appium測試框架,我選擇了之前比較熟悉的python,最開始用的ide是eclipse,後來發現pycharm更好用,如果喜歡用python進行自動化測試,推薦使用pycharm。

最初,我想實現在mac內既能跑Android的指令碼,又能跑IOS自動化指令碼,之前接觸過selenium,後來經常逛Testerhome,喜歡上了appium,雖然搭建appium環境可能比較簡單,但是我還是踩過了不少的坑。

1、安裝並配置JDK,1.6或者1.7版均可,建議1.7,Java SDK的安裝很簡單,不詳述了。

2、安裝pycharm

3、安裝python,並配置環境

4、安裝node 5、安裝appium的appium-1.4.13.dmg,配置appium環境變數,由於我的mac環境是10.11.2。
6、安裝Android SDK並配置環境變數(測試中用到Android SDK的一些工具)

7、(1)安裝Python的setuptools庫 (因為安裝Python的Selenium庫需要用到它)
(2) 安裝Python的Selenium庫(Appium是採用WebDriver傳輸測試請求,利用Selenium的WebDriver功能)
(3)安裝appium-python-clien。這個挺重要。
8、下載Python的HTMLTestRunner.py,儲存到Python安裝路徑的Lib目錄下(如C:\Python27\Lib),mac環境下可以用import匯入。

環境配置之後,在pycharm檢視可以看到如下圖所示。


GUI下啟動appium服務以後,可以檢查一下當前環境配。


命令列啟動appium時候,開始使用appium.js。但是後來雖然能正常啟動服務,但是用命令列啟動服務之後,IOS指令碼不能跑,appium啟動IOS模擬器總是會報錯,後來通過各種糾結查詢之後,用appium.js --native-instruments-lib啟動服務,可以使得ios的指令碼可以正常執行。mac上配置的環境是mac 10.11.2; appium 1.4.13;xcode 7.1.2。

2、appium框架搭建完畢以後,涉及到寫指令碼,執行指令碼。借用了PageObject模式,封裝了一些方法,希望達到資料和執行用例的分離,現在可以做到。如下圖所示。


寫指令碼的時候,安卓直接啟動uiautomator通過檢視模擬器上安裝的app的定位資訊,類如ID,Name等等。IOS可以通過啟動GUI appium,然後開啟inspector檢視控制元件資訊,但是inspector總是會出現各種各樣的問題,有時候會啟動不起來,因為我用的是模擬器,就把模擬器的配置截圖出來。

執行所有用例,我直接使用

#coding:utf-8
import  unittest,os,sys,HTMLTestRunner,time
reload(sys)
sys.setdefaultencoding('utf-8')
def suite():
	dir_case=unittest.defaultTestLoader.discover(
		'/Users/',
		pattern='Real_*.py',
		top_level_dir=None
		)
	return dir_case
def runAutomation():
	filename="/Users/yq519"
	fp=file(filename,'wb')
	runner=HTMLTestRunner.HTMLTestRunner(
			stream=fp,
			title=u'自動化測試報告',
			description=u'自動化測試報告詳細的資訊'
		)
	runner.run(suite())
if __name__=='__main__':
	runAutomation()
3、使用jenkins將執行的結果以郵件形式發出來。

因為還在摸索階段,現在其實想放棄用appium進行ios的測試,因為appium在執行ios測試的時候,總是會出現各種環境方面的小問題,最近在研究用xcode自帶的uiautomation,但是執行報告不知道怎麼出來。

可能文章中有各種問題,希望有大神可以提供指導交流。