使用appium框架执行Android自动化测试时,如果移动端程序发生了异常,期望有相应的log辅助分析,于是想到了需要测试过程需要打印logcat,实践了以下的方法:
方法1:执行自动化测试时,同时打开另外一个cmd,用来抓取日志,以下是使用python脚本或直接在命令行获取logcat日志实例:
1)python(log文件名加上了当前时间):
#encoding:utf-8
import os
import time
import re
testdir=r"D:\test"
now = time.strftime('%Y-%m-%d-%H_%M_%S', time.localtime(time.time()))
logcatname=testdir+"\\"+now+r"logcat.log"
cmd="adb logcat -v time >%s" %(logcatname)
os.popen(cmd)
2)cmd窗口命令行
adb logcat -v time >保存文件的目录\文件名.txt
测试结束时,ctrl+c终止
方法2:使用subprocess
import
subprocess
import time
调用:
now
=
time.strftime(
"%Y-%m-%d-%H_%M_%S"
,time.localtime(time.time())) #获取当前时间
filename
=
"D:/test/logs/"
+
now
+
r
"log.txt" #日志文件名添加当前时间
logcat_file
=
open
(filename,
'w'
)
logcmd
=
"adb logcat -v time"
Poplog
=
subprocess.Popen(logcmd,
stdout
=
logcat_file,
stderr
=
subprocess.PIPE)
使用完后:
logcat_file.close()
Poplog.terminate()
实施过程中,出现过logcat日志为空的情况,后来把Poplog.terminate()放到最后,就符合预期了,在放日志的路径下,可以看到相应的log文件: