2017-04-05 14 views
0

私はAndroidアプリケーションを自動化しています。私は自動化テストを実行している間にログをキャプチャできる必要があります。私は端末エミュレータを使ってみましたが、これはコンソールログだけを与えるようです。私は実行するlogcatを必要とするので私のために動作しません。これは、次の私はadb logcatの出力をキャプチャします

 log = subprocess.check_output(["adb", "logcat"]) 

を使用してみました。しかし、私はこれを行うとき(logcatキャプチャが完了した後も継続して待っていると思われるので)私の自動化スクリプトが無期限に停止しますバックグラウンドで、スクリプトが実行中です。だから多分 'Popen'は行く方法だし、出力をパイプするのだろうか?ありがとうございました!

+0

あなたはリアルタイムでlogcat出力を使用していますか、あなたはそれを後で必要なのでしょうか? – TemporalWolf

+0

後で対応します。出力をファイルに保存してフォルダに保存しますか? – cjg123

答えて

2

ログは常に「バックグラウンドで実行中」です。ログは、あなたがそれらを見ているかどうかだけです。代わりに、ログダンプが必要なときに使用することをお勧めします。

adb logcat -d 

現在の内容をダンプして終了します。

だからあなたのテスト実行の開始時:

subprocess.call(shlex.split('adb logcat -c')) 

ログをクリアします。

だから、最後(および再起動の前)で、ログをダンプ:

log = subprocess.check_output(shlex.split('adb logcat -d')) 
with open("loggy.file", "w") as f: 
    f.write(log) 
+0

これで、キャプチャしたいプロセスの最後に実行できるので、最後のダンプからキャプチャされたすべてのログをダンプしますか?また、どのように出力を処理するつもりですか? – cjg123

+0

私はcheck_outputを使用するので – cjg123

+0

'adb logcat -d'は前回の再起動時からログ全体をダンプします。テスト中にのみログをインクルードしたい場合は、 'adb logcat -c'でテストを開始し、ログをクリアすると、必要なログのみが含まれます。それをファイルにダンプします。 – TemporalWolf

関連する問題