首页 > 解决方案 > 如何阻止 Jenkins 将良好的测试运行标记为错误?

问题描述

我正在通过批处理文件在 Jenkins 中运行 C#/Selenium 测试。

Example call "C:\FrontEnd\MobileRegression.bat"

在bat文件里面

c:\SpecRun\SpecRun.exe run Default.srprofile /baseFolder:C:\testBase /filter:"@MobileGalaxy" /log:specrun.log /outputfolder:output /report:MobileGalaxy.html

这很好用,在这个例子中,有 10 个场景要运行。有时 1 或 2 个场景会失败,但如果发生这种情况,它们会再重试两次,并且总是在第 2 次或第 3 次尝试时通过。因此,在运行结束时,结果是通过,并且由于某些场景在第一次运行时失败,Jenkins 将其记录为失败。是否有任何改变(例如,如果 90% 的测试通过然后标记为通过)?

提前感谢您的帮助

凯夫

标签: c#seleniumjenkins

解决方案


Jenkins 以错误结束,因为您的批处理文件返回的退出代码不为零,这意味着:

当程序完成执行时,它会向系统返回退出代码。退出代码(也称为“退出状态”)是一个从 0 到 255 的整数。批处理系统报告此退出代码。始终为零表示成功,非零表示错误。

根据评论,我向您建议以下方法:

#1 尝试在批处理文件中捕获

您需要确保您的批次以零作为退出代码或成功结束。您可以使用errorlevel退出 /b 0

这里有一些理论和例子:

#2 尝试使用 jenkins 管道脚本捕获

在这种方法中,您需要将一个批处理文件(有 10 个场景)拆分为 10 个批处理文件(一个场景一个)

之后,您可以使用 jenkins 管道脚本调用每个批处理文件并使用try catch控制错误并更新 counter_error 变量。

在您的詹金斯脚本结束时,您可以评估:

if count_error > 9
  // notify a success execution to jenkins 
  // using currentBuild.result = 'SUCCESS'

这里有一些理论和例子:


推荐阅读