You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:22:07