2017-04-05 192 views
0

我正在自动化一个Android应用程序,并且我需要能够在运行自动化测试时捕获日志。我曾尝试使用终端模拟器,但这似乎只给控制台日志。接下来,我尝试使用从adb logcat捕获输出

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

但我做到这一点时,我的自动化脚本无限期(大概是因为它正在等待继续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