在GitHub Actions中运行Robot Framework无法获取测试返回码
问题原因
GitHub Actions中每个run步骤都是独立的Bash会话,会话之间的状态(包括命令返回码$?)不会共享。你当前的Set Robot Return Code步骤里的$?,获取的是该步骤内最后一条命令执行前的返回码(由于该步骤里之前没有失败的命令,所以返回码始终为0),而非上一个Run Tests步骤中robot test.robot命令的返回码。
解决方案
有两种可行的调整方式:
方式一:合并测试执行与返回码捕获到同一步骤
将运行测试和设置环境变量放在同一个run步骤中,这样$?就能正确获取到robot命令的返回码:
name: Test on: [workflow_dispatch] jobs: TEST-Run: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: install run: | pip3 install -r requirements.txt - name: Run Tests and Capture Return Code run: | robot test.robot echo "ROBOT_RC=$?" >> "$GITHUB_ENV" - name: If Auto Test Pass Rate Not 100%, Job Will Fail if: env.ROBOT_RC != '0' run: | echo "Auto Test Pass Rate Not 100%, Please Check Test Result" exit 1
方式二:利用步骤结果状态判断
给测试步骤添加id和continue-on-error: true,让测试失败时不直接终止job,然后通过步骤的outcome状态来判断是否触发失败逻辑:
name: Test on: [workflow_dispatch] jobs: TEST-Run: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: install run: | pip3 install -r requirements.txt - name: Run Tests id: robot-tests continue-on-error: true run: | robot test.robot - name: If Auto Test Pass Rate Not 100%, Job Will Fail if: steps.robot-tests.outcome == 'failure' run: | echo "Auto Test Pass Rate Not 100%, Please Check Test Result" exit 1
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

