モバイルテストは、Appium に基づいて記述された自動テストコードをサポートしています。
モバイルテストは、pytest、unittest、Robot Framework などのサードパーティライブラリをサポートしています。別のフレームワークを使用する場合は、テクニカルサポートにお問い合わせください。
前提条件
Appium を使用した自動テストの方法を理解している必要があります。詳細については、「Appium ドキュメント」をご参照ください。
Python プログラミングの基本的なスキルが必要です。
背景情報
Android テストスクリプトを作成するには、次の操作を実行する必要があります。
ケイパビリティファイルを作成し、テストスクリプトを記述します。ケイパビリティファイルは、テストスクリプトを実行するために必要なテスト環境を指定するために使用されます。詳細については、「手順 1:ケイパビリティファイルを作成する」および「手順 2:テストスクリプトを記述する」をご参照ください。
コンピューターで Appium サーバーを起動して、作成されたテストスクリプトを確認します。詳細については、「手順 3:Appium サーバーを起動する」および「手順 4:テストスクリプトを確認する」をご参照ください。
テストスクリプトが確認されたら、モバイルテストコンソールにアップロードします。詳細については、「手順 5:テストスクリプトをモバイルテストコンソールにアップロードする」をご参照ください。
手順 1:ケイパビリティファイルを作成する
desired_capabilities.py
という名前のケイパビリティファイルを Python 言語で記述し、ルートディレクトリに保存します。
desired_capabilities.py
は、テストスクリプトがローカルで実行される場合にのみ、テスト環境を指定するために使用されます。
desired_capabilities.py
ファイルには、get_uri()
関数と get_desired_capabilities()
関数が含まれています。
関数 | 説明 |
| 現在のセッションのパラメーターをクエリします。 ビジネス要件に基づいてパラメーターを設定できます。詳細については、「Appium Desired Capabilities」をご参照ください。 |
| Appium サーバーの URL を返します。 |
サンプル コード
#!/usr/bin/env python
def get_desired_capabilities():
desired_caps = {
'platformName': 'Android',
'platformVersion': '7.0',
'deviceName': 'V889F',
'appPackage': 'com.alibaba.mts.mtsdemoapp',
'appWaitPackage': 'com.example.Android.myapp',
'app': 'D:/home/xx/xx/xx/xx.apk',
'newCommandTimeout': 30,
'automationName': 'Appium'
}
return desired_caps
def get_uri():
return "http://localhost:50000/wd/hub"
パラメータの説明
次の表は、
get_desired_capabilities()
関数で設定されるパラメーターについて説明しています。
パラメーター | 説明 |
platformName | テスト デバイスのシステム タイプ。有効な値:Android および iOS。 |
platformVersion | テスト デバイスのシステム バージョン。 |
deviceName | テスト デバイスの名前。 |
appPackage | テスト対象 アプリのパッケージ名。このパラメーターは Android システムでのみ有効です。 |
appWaitPackage | テスト中に起動を待機しているアプリのパッケージ名。このパラメーターは Android システムでのみ有効です。 |
app | アプリ インストール ファイルのストレージ パス。 |
newCommandTimeout | 2 つのコマンド間で許容される最大 時間 間隔。単位:秒。 2 つのコマンド間の 時間 間隔が指定された値を超えると、Appium サーバーは現在のセッションを終了します。 |
automationName | 現在のセッションで使用されるオートメーション エンジンの名前。
|
デフォルトでは、オンプレミス Appium サーバーのリスナー ポートは 50000 に設定されています。この場合、get_uri() の戻り値は
http://localhost:50000/wd/hub
です。
ステップ 2: テストスクリプトを作成する
Python 言語で main.py
という名前のテストスクリプトを作成し、ルートディレクトリに保存します。このスクリプトは、自動テストを実行するためのエントリとして使用されます。
モバイルテストは、main.py
テストスクリプトを実行することで機能テストを実装します。
サンプルコードと説明:
# -*- coding: utf-8 -*-
from appium import webdriver
# ルートディレクトリに作成された desired_capabilities.py ファイルをインポートします。
import desired_capabilities
# Python の unittest を単体テストツールとして使用します。
from unittest import TestCase
# Python の unittest を単体テストツールとして使用します。
import unittest
# time.sleep(xx) 関数を使用して、現在のスレッドの実行を指定された秒数だけ一時停止します。
import time
class MqcTest(TestCase):
global automationName
def setUp(self):
# 指定された機能をクエリし、Appium サーバーに対応するセッションの作成を通知します。
desired_caps = desired_capabilities.get_desired_capabilities()
# Appium サーバーの URL をクエリします。
uri = desired_capabilities.get_uri()
# 使用されているテストフレームワークをクエリします。
self.automationName = desired_caps.get('automationName')
# セッションを作成し、すべてのデバイス操作をカプセル化するドライバーオブジェクトをクエリします。
self.driver = webdriver.Remote(uri, desired_caps)
def test_searchbox(self):
# "Tab4" 文字列を含むコントロールを見つけます。
if self.automationName == 'Appium':
tab4 = self.driver.find_element_by_name("Tab4")
else:
tab4 = self.driver.find_element_by_link_text("Tab4")
# "Tab4" 文字列を含むコントロールをクリックします。
tab4.click()
# 2 秒待機します。
time.sleep(2)
# コントロールクラス名でユーザー名とパスワードのフィールドを見つけます。
editTexts = self.driver.find_elements_by_class_name("android.widget.EditText")
# ユーザー名とパスワードを入力します。[0] はユーザー名、[1] はパスワードを指定します。
editTexts[0].send_keys("admin")
editTexts[1].send_keys("admin")
# 表示されているソフトウェアキーボードを非表示にします。
self.driver.hide_keyboard()
# [ログイン] ボタンを見つけてクリックします。
if self.automationName == 'Appium':
self.driver.find_element_by_name("Log On").click()
else:
self.driver.find_element_by_link_text("Log On").click()
# ログインプロセスが完了するまで 3 秒間待機します。
time.sleep(3)
def tearDown(self):
# テストは完了です。セッションを終了します。
self.driver.quit()
if __name__ == '__main__':
unittest.main()
手順 3: Appium サーバーを起動する
appium
コマンドを CLI で実行して、Appium サーバーを起動します。例: appium -p 50000
。
パラメータ
パラメータ | 説明 |
-p | Appium サーバーのリスナー ポートを指定します。 |
-a | Appium サーバーの IP アドレスを指定します。 |
--selendroid-port | Selendroid モードでの Android Debug Bridge (adb) のポートを指定します。 |
-U | 複数のデバイスが Appium サーバーに接続されている場合に、テスト デバイスのシリアル番号を指定します。 |
--full-reset | テストケースの実行後にデバイスをクリーンアップすることを指定します。 |
手順 4: テストスクリプトを確認する
モバイルフォンをコンピュータに接続します。
開発者モードが有効になっているモバイルフォンをコンピュータに接続します。
リモートデバイスに接続し、
adb connect
コマンドを実行してから、リモートデバイスをコンピュータに接続します。
CLI で
python main.py
コマンドを実行して、main.py
テストスクリプトを実行および確認します。
手順 5: テストスクリプトを Mobile Testing コンソールにアップロードする
main.py
ファイルをルートディレクトリで ZIP ファイルに圧縮します。Mobile Testing コンソールで、
main.py
ファイルをアップロードして、[スクリプト] を作成します。このスクリプトは、Android デバイスでの後続の機能テストに使用されます。スクリプトの作成方法の詳細については、「スクリプトを作成する」をご参照ください。