如何在Harness流水线中实现Appium测试完成后终止并行Logcat步骤
在Harness流水线中实现Appium测试与Logcat日志收集并行且自动终止日志步骤
核心思路
将Appium测试步骤与Logcat日志收集步骤放入同一个并行阶段,通过Harness的步骤依赖机制+进程控制逻辑,让Logcat进程在Appium测试完成时自动终止。
具体实现步骤
1. 创建并行执行阶段
在Harness流水线中新建阶段,开启并行执行模式,把Appium测试步骤和Logcat收集步骤都纳入该阶段。
2. 配置Appium测试步骤
按正常流程配置测试逻辑,确保步骤会在测试完成后正常退出。示例命令:
# 启动Appium服务并运行Android测试 appium --port 4723 & npm run test-android
如果需要传递进程ID给Logcat步骤,可在命令末尾追加:
# 将当前测试进程ID写入Harness环境变量 echo "TEST_PID=$$" >> $HARNESS_ENV_FILE
3. 配置Logcat收集与自动终止逻辑
提供两种实用方案,按需选择:
方案一:PID追踪+后置终止步骤
- Logcat启动步骤:启动日志收集并记录进程ID
# 启动Logcat并输出到文件,记录进程PID adb logcat -v time > app-test-logs.txt & LOGCAT_PID=$! # 将PID写入临时文件 echo $LOGCAT_PID > /tmp/logcat.pid - 后置终止步骤:添加一个依赖Appium测试步骤的步骤,设置触发条件为「测试步骤完成(成功/失败均可)」,执行终止命令:
# 读取PID并终止Logcat进程,忽略终止失败的报错 LOGCAT_PID=$(cat /tmp/logcat.pid) kill $LOGCAT_PID || true
方案二:进程组等待(更简洁)
如果执行环境支持进程组控制,可让Logcat进程等待测试进程结束后自动终止:
# 启动Logcat收集 adb logcat -v time > app-test-logs.txt & LOGCAT_PID=$! # 等待Appium测试进程结束(通过Harness变量获取测试PID) wait ${TEST_PID} # 终止Logcat进程 kill $LOGCAT_PID || true
4. 验证逻辑
运行流水线后确认:
- 两个步骤同时启动执行
- Appium测试结束时,Logcat进程立即终止
- 日志文件完整生成
关键注意事项
- 确保adb在两个步骤中都能正常访问模拟器/设备,避免权限或连接问题
- 若Logcat终止时出现报错,可在
kill命令后加|| true,防止流水线因该报错失败 - 后置终止步骤的触发条件需设置为「Stage Success or Failure」,保证测试无论成败都会终止日志收集
内容的提问来源于stack exchange,提问作者Truong
相关产品推荐
相关产品推荐

