【问题标题】:Test automation with Jenkins + Robot framework使用 Jenkins + Robot 框架进行测试自动化
【发布时间】:2016-03-03 23:47:53
【问题描述】:

我们正在使用 Jenkins 进行持续集成。

我还为机器人框架测试用例创建了 Jenkins 作业。但是在使用 Jenkins 运行机器人框架测试用例时遇到了问题。

假设我必须在机器人框架的 Jenkins 作业中包含大约 300 个测试用例,在运行测试用例时,如果任何测试用例失败,那么剩余的测试脚本将不会被执行。

例如:在运行测试用例时,如果第 10 个测试用例失败,那么剩下的 290 个测试用例将不会被执行!

在 Jenkins 中是否有更好的选择以并发方式运行所有测试用例? - 这样任何测试用例的失败都不会影响其他测试用例的执行!

我唯一的要求是 - 即使任何测试用例在两者之间失败,也必须执行 Jenkins 作业中列出的所有测试用例。

您能否为这个问题提出一个解决方案?

我是否必须为此添加任何其他插件?

这是此特定 Jenkins 作业的屏幕截图 -

【问题讨论】:

  • 你是如何运行所有这些测试的?你的詹金斯工作是什么样的?这听起来不像是正常行为。 “任何一个测试用例失败”是指一个测试用例,还是只有一个测试用例但有 300 个关键字可以进行断言?
  • 你好@Bryan ..谢谢你的回复。我对詹金斯比较陌生。我已经编辑了我的问题并添加了这个特定 Jenkins 工作的屏幕截图。你能通过它吗?我通过执行一个包含命令pybot /path/to/test/case 的shell 来运行每个测试用例。我刚刚创建了一个包含300 个shell 的作业(每个都执行一个命令pybot ........ )。是否为此目的创建 Jenkins 工作的正确方法? & “任何一个测试用例失败”意味着如果任何一个测试用例失败(pybot ....),其余的 shell 将不会被执行。

标签: jenkins selenium-webdriver automation automated-tests robotframework


【解决方案1】:

这不是批量运行测试的好方法。对于初学者来说,RobotFramework 日志只会包含最后一次测试的结果,即使它们都通过了。

问题是,当构建中的“执行 Shell”步骤失败时,Jenkins 会停止构建。正如上面的 cmets 所指出的,您可以尝试使用 exit 0 更改返回状态。

但是,不是每个测试都是一个单独的构建步骤:

pybot /home/arun/test-cases/228.txt
pybot /home/arun/test-cases/117.txt
...etc

你应该在一个步骤中一起执行它们:

pybot /home/arun/test-cases/

如果您需要控制执行哪些测试而不是该文件夹及其子文件夹中的所有有效测试文件,请使用tags

【讨论】:

  • 感谢@aneroid 的解决方案。
  • 欢迎来到 SO。通常,您应该对有帮助的答案进行投票,并接受最适合您的答案。
【解决方案2】:

https://wiki.jenkins-ci.org/display/JENKINS/Robot+Framework+Plugin 列为必要的配置步骤之一:

  1. 强制您的机器人脚本通过“exit”从 shell 成功返回 0" 授权插件决定构建是否成功/失败 (默认情况下,当测试失败时,Robot 会以错误代码退出)

因此,如果您的测试脚本返回 0,那么 jenkins 构建不会失败,您可以根据结果决定要显示什么状态。

  1. 设置阈值并可选择禁用关键测试的阈值 只计算通过百分比中的每个测试。

【讨论】:

  • 他们还应该确保他们使用--exitonfailure命令行选项。
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 2017-10-12
  • 2021-11-27
  • 1970-01-01
相关资源
最近更新 更多