2017-07-12 9 views
0

私たちはFastlaneと組み合わせてTravis CIを使用して、私たちの自動ビルドと夜間のUI Espressoテストを行っています。インストルメンテーションテストでは、gcloudコマンドラインツールを使用してFirebase Testラボを使用しようとしています。gcloud Firebaseテストラボの取得方法CLIからテストした後のAndroid Espressoの結果は?

私はSlackに内部的に報告できるように、簡単な形式でテスト結果を得ようとしています。たとえば、いくつのテストが合格したか、失敗したか、そしてどれが成功したかなどです。

./google-cloud-sdk/bin/gcloud beta firebase test android run \ 
--type instrumentation \ 
--app ourapp/app/build/outputs/apk/mock/debug/app-mock-debug-local.apk \ 
--test ourapp/app/build/outputs/apk/androidTest/mock/debug/ourapp-mock-debug-androidTest.apk \ 
--device-ids hammerhead \ 
--os-version-ids 22 \ 
--locales en \ 
--orientations portrait \ 
--project ourappgoogleprojectid \ 
--timeout 15m 

これは、すべての罰金のテストを実行し、このような2つのいくつかのランダムなリンクを持つGoogleのクラウドストレージバケット内生の結果へのリンクもいくつかのログを出力します。それは印刷し最終的にはその後

Raw results will be stored in your GCS bucket at [https://console.developers.google.com/storage/browser/test-lab-vx5ak1y4tt3sw-yrzyhxjh4r1r6/] 

13:25:59 Test is Pending 
13:26:06 Starting attempt 1 
13:26:06 Test is Running 
13:26:46 Logging into the device 
13:26:53 Installing APK: com.ourcompany.ourapp.debug 
13:27:13 Installing APK: com.ourcompany.ourapp.test 
13:27:33 Running instrumentation test. Package: com.ourcompany.ourapp.test testrunner: android.support.test.runner.AndroidJUnitRunner orchestrator: false options: [] 
13:34:34 Instrumentation test has finished 
13:34:34 Generating video 
13:34:41 Retrieving performance samples 
13:35:00 Retrieving test artifacts 
13:35:13 Retrieving any crash results 
13:35:20 Retrieving logcat 
13:35:53 Done. Test time=416 (secs) 
13:36:00 Test is Finished 

Instrumentation testing complete. 

を私が最も興味:

┌─────────┬───────────────────────────┬──────────────────────┐ 
│ OUTCOME │  TEST_AXIS_VALUE  │  TEST_DETAILS  │ 
├─────────┼───────────────────────────┼──────────────────────┤ 
│ Passed │ hammerhead-22-en-portrait │ 60 test cases passed │ 
└─────────┴───────────────────────────┴──────────────────────┘ 

しかし、私は結果の良い、実用的、簡単な概要を得ることができ、そこから他に何もありません。

は、私はそれを次のように操作を行うだけでできると思う:

をGrep/awkは/ SED /何でもそれは出力に出力したバケットのURL。しかし、そのURLにはいくつかのランダムなIDとそれ以外のものがあります。 Travisのbashスクリプトから、そのバケットにxmlファイルをダウンロードしようとします。しかし、すべてのテスト結果xmlは、テストが実行されたデバイスの名前をそれぞれのフォルダに入れています。たとえば、hammerhead-22-en-portraitです。簡単なテストの要約を取得するためにそのような面倒。私が必要とするのは、上に印刷されたテーブルの情報だけです。

gcloudコマンドオプションがありますか?ドキュメントは恐ろしいです。適切なxmlファイルをすぐにダウンロードするオプションや、適切な情報などで環境変数を設定するオプションがあることを期待していました。

または、そのテーブルから簡単に値を抽出する方法はありますか?

EDIT: Androidスタジオではapkを自動的にビルドしてアップロードし、Firebaseテストラボマトリックスでテストを実行する実行コンフィギュレーションの設定がサポートされています。その後、Android Studioの[実行]タブでテストレポートを取得します。ここから、これらのテスト結果をHTMLまたはXMLにエクスポートできます。そのXMLはまさに私が望むものです。 Android Studioがこれを行うために使用するツールや、コマンドラインツールを使って同じことをやり遂げる方法を誰かが知っていますか?

答えて

4

ここでは、あなたがしようとしていることに役立つヒントを紹介します。

結果パスのデフォルトのランダムIDについては、--results-dir=my/results/pathフラグを使用して、そのパスをより詳細に制御できます(実行するテストごとに一意の値を選択してください)。 --results-bucket=gs://my-bucketを指定して、テスト結果が格納される最上位バケットを制御することもできます。 --results-bucketを使用する場合は、GCPの請求先アカウントが必要となり、結果に対してCloud Storageの料金が発生することに注意してください。提供されているデフォルトのバケットを無償で使用することができます。また、スクリプトのためにパスを安定させる必要があります。

gcloud firebase test android runコマンドのすべてのフラグオプションは、documented hereです。または、CLIを使用して、gcloudコマンドまたはコマンドスニペットに--helpを追加します。

これらのフラグを使用すると、junitを直接取得できるはずです。xmlファイルをgsutil cp <src> <dst>コマンドを使用して生の結果から削除します。

gcloudの出力を直接解析する場合は、すべてのステータスの更新がstderrに出力されている間に、テスト結果テーブルがstdoutに出力されることがわかります。したがって、コマンドに1>results.outを追加するだけで結果を分離することができます。 フラグ(すべてのgcloudコマンドで使用可能)で出力テーブルのフォーマットを制御することもできます。あなたは上記のあなたのコマンドに--format=json 1>results.outを追加した場合、出力は次のようになります。

[ 
    { 
    "axis_value": "hammerhead-21-en-portrait", 
    "outcome": "Failed", 
    "test_details": "5 test cases failed, 187 passed" 
    } 
] 

あなたはgcloud topic formatsを実行してのgcloudフォーマットについての詳細を学ぶことができます。

+0

パーフェクト!正確に私が必要としていたものです。特に、このプロジェクトでFirebaseの請求アカウントを設定していないためです。私は何かが欠けていたに違いないことを知っていた、 '--format'フラグがトリックをしました、ありがとう! – user2274109

関連する問題