2023-05-12|閱讀時間 ‧ 約 7 分鐘

App 自動化測試(六)Python 第一個APP測試案例-系統設定

前言

經過五個小單元的準備,終於可以開始跑第一個測試了,Appium 本身是個工具,可以搭配各種語言,這邊選擇 Python 作為測試腳本語言,以便之後跟 Robot Framework 串接。

安裝 Python 與 Appium 函示庫

確認 Python 版本
Ubuntu 20.04 內建3.8,使用以下指令確認
$ python3 --version
Python 3.8.10
不過 python 沒有預設關連,用以下指令指定預設
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
指定 3.7 為預設 Python3 版本
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1
sudo update-alternatives --config python3
確認安裝的版本,參考來源
$ python --version
Python 3.8.10
安裝 Python 的套件管理工具:pip
sudo apt install python3-pip -y

安裝 Appium Python Client
用 PIP 安裝 Appium-Python-Client
pip install Appium-Python-Client
確認安裝成果
$ pip show Appium-Python-Client
Name: Appium-Python-Client
Version: 2.10.1

安裝 Android SDK並指定路徑
安裝 SDK
sudo apt update && sudo apt install android-sdk
確認安裝位置:
$ ls /usr/lib/android-sdk -al
total 28
drwxr-xr-x   7 root root 4096 May 24 01:33 .
drwxr-xr-x 128 root root 4096 May 24 01:33 ..
drwxr-xr-x   3 root root 4096 May 24 01:33 build-tools
drwxr-xr-x   2 root root 4096 May 24 01:33 licenses
drwxr-xr-x   3 root root 4096 May 24 01:33 platforms
drwxr-xr-x   2 root root 4096 May 24 01:33 platform-tools
drwxr-xr-x   4 root root 4096 May 24 01:33 tools
將以下幾行加入 ~/.bashrc 中
ANDROID_HOME="/usr/lib/android-sdk"
ANDROID_PLATFORM_TOOLS="$ANDROID_HOME/platform-tools"
ANDROID_TOOLS="$ANDROID_HOME/tools"
ANDROID_BUILD_TOOLS="$ANDROID_HOME/build-tools/27.0.1"
export ANDROID_HOME
export ANDROID_PLATFORM_TOOLS
export ANDROID_TOOLS
export ANDROID_BUILD_TOOLS
更新環境變數
source ~/.bashrc

撰寫測試腳本

到這就把所有需要用 Python 執行 Appium 測試需要的相關套件都備齊了,請參考一下範例建立第一個測試腳本
$ cat testSettings.py 
import unittest
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy

options = UiAutomator2Options()
options.platformVersion = '11'
options.appPackage='com.android.settings'
options.appActivity='.Settings'

appium_server_url = 'http://localhost:4723'

class TestAppium(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Remote(appium_server_url, options=options)

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

    def test_find_battery(self):
        el = self.driver.find_element(by=AppiumBy.XPATH, value='//*[@text="Battery"]')
        el.click()

if __name__ == '__main__':
    unittest.main()
簡單說明一下腳本內容,他是透過 unittest 來執行,所以有些額外的 class 指令,基本上就是設定待測物資訊、連接、確認是否有某元素
  1. 前四行是載入必要的函示庫
  2. 再來四行是設定連接方式跟待測 App 資訊
  3. 再來是指定 Appium 的 IP 跟 PORT
  4. 再來是一個 unittest 的類別: setUp 初始化連線 test_find_battery 是唯一個測試案例,會尋找是否有含 Battery 文字的元素,並點擊 tearDown 結束測試
  5. 最後是主函示

執行

首先要手動從模擬器中開啟設定APP,因為沒有指定APK無法自動開啟
再來就是執行 appium server 服務
$ appium
開另外一個指令視窗執行測試
$ python testSettings.py
就會看到電池次選單被點開

小結

經過漫長的準備,總算把 Hello World 的第一個測試完成,接著會細部介紹如何瀏覽元素、定位元素來寫真正的測試案例。
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.