python app自動化測試 入門篇

移動端的app自動化測試需要一定的開發基礎才能完成,首先從環境搭建會有些繁瑣,目前使用比較多的是appium配合進行自動化測試,我理解的就是appium比較小巧而能完成需求,所以比較火一些。

首先環境準備:


1.首先安裝node.js

https://nodejs.org/en/ 進入官網建議下載


我記得我使用v8的時候有一個bug處理不了,建議穩定版吧。

安裝完畢之後,可以查看是否成功:


2.準備android-sdk

http://pan.baidu.com/s/1cD8Ygm

下載就行了,時間會長些。

配置sdk


把sdk所處的目錄下面的

D:\soft\android-windows-x86_64\sdk\tools

D:\soft\android-windows-x86_64\sdk\platform-tools

這2個加入到Path裏面去


3.安裝一個模擬器

模擬器可以直接下載 夜神 模擬器(直接百度 夜 即可)

也可以下載官方指定的Genymotion模擬器(百度即可)

我這裏使用的是Genymotion模擬器


模擬器啓動之後,使用adb命令之後就會發現這個設備,這表明已經成功了。

4.安裝appium

https://bitbucket.org/appium/appium.app/downloads/



記得選擇ForWindows的就行了,這是一個exe文件下載完畢,直接安裝就行了,不囉嗦了。

記得配置下path變量


安裝完畢之後打開是否正常:


4.安裝python這個比較簡單就不多說了,安裝python之後裝一個pip,這個上篇文章已經講過了,pip安裝完畢之後執行命令:pip install Appium-Python-Client,至此環境完畢。

這樣前期的環境已經準備完畢了。

開始寫測試腳本:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
import unittest
from appium import webdriver
from time import sleep

PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)
class NewsTest(unittest.TestCase):
    ##初始化工作
    def setUp(self):

        capabilities = {}
        capabilities['platformName'] = 'Android'
        capabilities['platformVersion'] = '5.1'
        capabilities['deviceName'] = 'Android Emulator'
        capabilities['appPackage'] = 'com.example.android.contactmanager'
        capabilities['appActivity'] = '.ContactManager'
        capabilities['app'] = PATH('./apps/ContactManager.apk')
        capabilities['unicodeKeyboard'] = 'True'
        capabilities['resetKeyboard'] = 'True'
        driver = webdriver.Remote('http://localhost:4723/wd/hub', capabilities)
        self.driver = driver

    # 具體的測試用例,一定要以test開頭
    def test_add_contacts(self):
        el = self.driver.find_element_by_accessibility_id("Add Contact")
        el.click()
        textfields = self.driver.find_elements_by_class_name("android.widget.EditText")
        textfields[0].send_keys("Appium User")
        textfields[2].send_keys("[email protected]")

        self.assertEqual('Appium User', textfields[0].text)
        self.assertEqual('[email protected]', textfields[2].text)
        self.driver.find_element_by_accessibility_id("Save").click()

    # 退出清理工作
    def tearDown(self):
        self.driver.quit()
if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(NewsTest)
    unittest.TextTestRunner(verbosity=2).run(suite)


這是我自己寫的一個測試腳本:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
import unittest
from Util import Util
from appium import webdriver
from time import sleep

PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)
class BaTest(unittest.TestCase):

    def setUp(self):

        #設置運行參數
        capabilities = {}
        capabilities['platformName'] = 'Android'
        capabilities['platformVersion'] = '5.1'
        capabilities['deviceName'] = 'Android Emulator'
        capabilities['appPackage'] = 'com.yuanyou.office'
        capabilities['app'] = PATH('./apps/app-release.apk')
        capabilities['unicodeKeyboard'] = 'True'
        capabilities['resetKeyboard'] = 'True'
        driver = webdriver.Remote('http://localhost:4723/wd/hub', capabilities)
        self.driver = driver
        self.LIST_LATIN  = "adb shell ime set com.android.inputmethod.latin/.LatinIME"
        self.LIST_APPIUM = "adb shell ime set io.appium.android.ime/.UnicodeIME"

    def test_login(self):
         sleep(10)
         #切換輸入法
         os.system(self.LIST_LATIN)
         #設置賬號
         self.driver.find_element_by_id('et_phone').send_keys('15922222222')
         self.driver.find_element_by_id('et_pwd').send_keys('123456')
         #點擊登陸
         self.driver.find_element_by_id('btn_login').click()
         #切換輸入法
         os.system(self.LIST_APPIUM)
         #模擬請假申請
         list = self.driver.find_elements_by_id('work_gridview_item_LL')
         list[3].click()
         list1 = self.driver.find_elements_by_id("ll")
         list1[0].click()

    def tearDown(self):
        self.driver.quit()


if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(BaTest)
    unittest.TextTestRunner(verbosity=2).run(suite)

這是一個公開的app測試腳本,對應的代碼包下載:http://download.csdn.net/download/gaoxuaiguoyi/9961131




發佈了136 篇原創文章 · 獲贊 69 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章