为什么在测试用例失败时管道失败
Why Pipeline Failed when there's test case failed
我在 Gitlab 中 运行ning robotframework-CI.
我面临的问题是,如果 运行 上有任何测试用例失败,它也会使管道失败。那么如何防止管道失败呢?因为测试失败,而不是整个构建过程。
现在,这就是我 运行 gitlab-ci.yml
上的机器人框架
- robot --exitonfailure -i "android-test" --outputdir ./output Android/Androidtest.robot
例如,我在 Androidtest.robot 测试套件上有 3 个测试用例:
1。登记
2。 fillin_profile
3。 checkout_order
如果注册案例和 fillin_profile 通过,但结帐订单失败,则 Ci 管道将失败。我不希望它失败,因为下一个工作是将 robotframework 测试报告发送到 gdrive,如果管道失败,它将永远不会发送。
是因为我添加了 --exitonfailure
参数吗?如何解决?
CI 的重点是在测试失败时失败。
上传您的测试结果或报告不应该是管道中的额外工作。我不知道 robotframework 但 GitLab 支持在测试失败后发布工件。
将 --exitonfailure
替换为 --nostatusrc
。
如果有测试失败,机器人将以非 0 的退出码退出。Gitlab 和与此相关的每个 ci 曾经,查看它是否使用非 0 的退出码执行任何命令,并认为有一个失败。使用 --nostatusrc
机器人将始终以 0 退出,因此您的 ci 认为不会出现故障。
请考虑,如果您继续抑制退出代码,那么如果测试失败,您要么失去将 CI 中的作业标记为失败的能力,除非您提供其他机制来做到这一点需要这样的功能。
我在 Gitlab 中 运行ning robotframework-CI.
我面临的问题是,如果 运行 上有任何测试用例失败,它也会使管道失败。那么如何防止管道失败呢?因为测试失败,而不是整个构建过程。
现在,这就是我 运行 gitlab-ci.yml
- robot --exitonfailure -i "android-test" --outputdir ./output Android/Androidtest.robot
例如,我在 Androidtest.robot 测试套件上有 3 个测试用例:
1。登记
2。 fillin_profile
3。 checkout_order
如果注册案例和 fillin_profile 通过,但结帐订单失败,则 Ci 管道将失败。我不希望它失败,因为下一个工作是将 robotframework 测试报告发送到 gdrive,如果管道失败,它将永远不会发送。
是因为我添加了 --exitonfailure
参数吗?如何解决?
CI 的重点是在测试失败时失败。 上传您的测试结果或报告不应该是管道中的额外工作。我不知道 robotframework 但 GitLab 支持在测试失败后发布工件。
将 --exitonfailure
替换为 --nostatusrc
。
如果有测试失败,机器人将以非 0 的退出码退出。Gitlab 和与此相关的每个 ci 曾经,查看它是否使用非 0 的退出码执行任何命令,并认为有一个失败。使用 --nostatusrc
机器人将始终以 0 退出,因此您的 ci 认为不会出现故障。
请考虑,如果您继续抑制退出代码,那么如果测试失败,您要么失去将 CI 中的作业标记为失败的能力,除非您提供其他机制来做到这一点需要这样的功能。