#はじめに
AirtestIDE でスマホアプリ(ゲーム)のテスト自動化をしています。そこで実際に作成したスクリプトや環境をつくるために実施したことを綴ってみたいと思います。
#環境
macOS 10.15.7
Airtest IDE 1.2.6(Python)
Android 7.0(Xperia Z5 Premium)
#アクセストークンをつくる
「設定」メニューから、「認証キー」タブを開いて「+」をクリック。
ここで、アクセストークンを作成します。
#STFの端末を取得するまで
###端末一覧を取得する
import requests
import pprint
def get_devices():
response = requests.get(
'https://stf.sample.net/api/v1/devices',
headers = {
'Authorization': 'Bearer <token>'
},
verify = False
)
res = response.json()
pprint.pprint(res)
一覧を取得してどの端末を借りるか決めます。
今回は、Xperia Z5 Premium にします。
ここで、端末の serial を取得しておきます。
###端末を借りる
import json
def reserve_device(serial):
payload = {
'serial': serial
}
response = requests.post(
'https://stf.sample.net/api/v1/user/devices',
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer <token>'
},
data = json.dumps(payload),
verify = False
)
res = response.json()
pprint.pprint(res)
先程の sereal を使って端末を借ります。
{'description': 'Device successfully added', 'success': True}
端末の状態が使用中になります。(自身のアカウントからみているので「Stop Automation」の表記になっている)
###端末へのリモート接続を有効にする
def connect_device(serial):
payload = {
'serial': serial
}
response = requests.post(
'https://stf.sample.net/api/v1/user/devices/' + serial + '/remoteConnect',
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer <token>'
},
data = json.dumps(payload),
verify = False
)
res = response.json()
pprint.pprint(res)
{'remoteConnectUrl': '<ip>:<port>', 'success': True}
当該端末への接続情報 <ip>:<port>
が取得できます。
#STFの端末でAirtestのスクリプトを実行する
STFの端末を指定してAirtestIDEコマンドを実行します。
###コマンドラインから実行する
$ cd $PROJECT_HOME
$ /Applications/AirtestIDE.app/Contents/MacOS/AirtestIDE runner "<プロジェクト>.air" --device Android://127.0.0.1:5037/<ip>:<port> --log log
先程取得した接続情報 <ip>:<port>
を使用します。
※複数台同時実行も可能です
###レポートを作成する
$ /Applications/AirtestIDE.app/Contents/MacOS/AirtestIDE reporter "<プロジェクト>.air" --log_root log --export exp
作成されたレポートは exp/<プロジェクト>.air/log.html
から参照できます。
#端末を返却する
def release_device(serial):
response = requests.delete(
'https://stf.sample.net/api/v1/user/devices/' + serial,
headers = {
'Authorization': 'Bearer <token>'
},
verify = False
)
res = response.json()
端末が開放され、貸出のステータスが元に戻ります。
#おわりに
参考になった箇所などありましたでしょうか。実際にSTFでAirtestIDEコマンドを試そうとした際に、関連する情報が見つからず試行錯誤したことがありましたので、何かのお役に立てたなら幸いです。
#参考
OSSなリモートスマホサービス(STF)が素敵すぎる
https://qiita.com/tabbyz/items/5f6cec37e1d525a8e4d5
Airtestを使ってUIのテストを自動化する話
https://qiita.com/johro/items/b77f5a8c3c3cf00bde30
Welcome to Airtest documentation!
https://airtest.readthedocs.io/en/latest/index.html
STF API
https://github.com/openstf/stf/blob/master/doc/API.md