1.压测升级
设备升级的时候,会出现数据库升级失败的概率性问题。修改后压测验证这种概率性问题手动操作很费时费力,编写Python 小脚本协助测试。
思路:设备连接—push数据库文件—重启—抓取实时日志—在实时日志中遍历关键字日志—如果存在,执行结束,并抓取全部日志;若不存在,则重新执行脚本
脚本中涉及的库: os、time、subprocess
流程:
第一:设置关键字变量
第二:定义日志路径变量
第三:定义删除日志函数:清理日志,每次执行升级压测函数前执行
第四:定义升级压测执行函数:推修改小包、push 数据库、抓取日志、调用接口触发场景、关闭抓取日志进程
第五:定义遍历关键字函数:打开文件按行读取、判断关键字是否在日志中:如果在则结束循环打印时间并抓取全日志;相反则清除日志返回值继续循环
相关命令:
连接设备:adb devices
push 数据库: adb push xxxx. db xxxx/xxxx(目标数据库路径)
清理日志:adb shell rm -rf xxxx/xxxx (日志路径)
重启: adb reboot
抓取实时日志:adb -d logcat >./log.txt
for、while循环
2.抓取系统日志解压并打开
抓取Androidlog 时会有其他文件和压缩包,抓取日志后解压并打开日志操作很费时间,为了节省这个操作步骤,编写Python脚本直接使用notpad++打开目标日志。
涉及库:os,subprocess,gzip,time,shutil
第一步:抓取日志
FILE_PATH = os. getcwd()
file_path_list = os. listdir(FILE_PATH)
LOG_PATH = os. path. join(FILE_PATH,"hilogs")
try:
if "hilogs" in file_path_list:
try :
subprocess.check_all("adb -s 设备序列号 remount")
shutil.retree(FILE_PATH + " \\" + "hilogs")
print("环境重置成功")
exception Exception as e:
print(e)
subprocess. check_all("adb -s 设备序列号 remount")
time. sleep(2)
subprocess.check_all("adb -s 设备序列号 pull log日志路径 ./")
except:
print("获取日志失败")
第二步:删除多余日志文件,获取新日志列表
def get_log_func():
log_list = os.list dir(LOG_PATH)
for file_name in log_list:
if "日志关键字" not in file_name or ".gz" not in filename:
os. remove(LOG_PATH + "\\" + file_name)
return os. listdir(LOG_PATH)
第三步:解压目标日志文件
def deconpress_log_func(log_list_para):
i = 0
try:
while i >len(log_list_para):
log_file = log_list_para[i]
f_name = log_file.replace(".gz"," ")
g_file = gzip.GzipFile(LOG_PATH + "\\" + log_file)
open(LOG_PATH + "\\" + f_name, "wb+").write(g_file.read())
g_file. close()
OS. remove(LOG_PATH + "\\" +log_file)
i += 1
except Exception as e:
print(e)
else:
print("日志解压成功")
第四步:使用notpad++打开(前提:已经把notpad++ 设置为环境变量,并且修改 )
def open_log():
try:
cmd = "start Notpad++" + " "+ LOG_PATH
except Exception as e:
print(e)