Robotframework 如何强制Robot框架脚本从shell成功返回;退出0“;

Robotframework 如何强制Robot框架脚本从shell成功返回;退出0“;,robotframework,Robotframework,在为Robot Framework使用Jenkin插件时,该指令指出我们需要使用“退出0”强制Robot Framework脚本从shell成功返回。这不是一个非常明确的声明 有人能告诉我,当测试成功时,我们如何强制robot框架返回“exit 0”吗?举个例子会很有帮助 以下是詹金斯维基上的声明 使用“退出0”强制Robot脚本从shell成功返回,以授权插件决定构建是否成功 (默认情况下,当出现任何故障时,Robot将退出,并显示错误代码。) 测试) 为了判断作业是成功还是失败,jenkin

在为Robot Framework使用Jenkin插件时,该指令指出我们需要使用“退出0”强制Robot Framework脚本从shell成功返回。这不是一个非常明确的声明

有人能告诉我,当测试成功时,我们如何强制robot框架返回“exit 0”吗?举个例子会很有帮助

以下是詹金斯维基上的声明

使用“退出0”强制Robot脚本从shell成功返回,以授权插件决定构建是否成功 (默认情况下,当出现任何故障时,Robot将退出,并显示错误代码。) 测试)


为了判断作业是成功还是失败,jenkins使用上次运行的命令的退出代码。“退出0”意味着让运行测试的脚本以退出代码
0
(零)完成测试

当机器人完成失败的测试时,有两种方法可以“退出0”:

  • 在运行测试的脚本中显式调用
    exit
  • 使用pybot选项--nostaturc
  • 有关robot framework返回代码的更多信息,请参见《robot framework用户指南》的一节

    使用exit命令
    exit
    是一个可以放入脚本中的命令,用于强制执行特定的状态代码。此命令在unix和非unix系统上的行为相同。它接受一个参数(例如
    0
    ),并以给定值作为退出代码退出封闭脚本

    配置jenkins时,您正在创建包含一个或多个命令的批处理脚本(窗口)或shell脚本(非窗口)。您可以添加
    exit 0
    作为强制此脚本“exit 0”的最后一个命令

    例如,您可以将jenkins作业配置为如下所示:

    pybot mytests.robot
    exit 0
    
    在本例中,最后一行将告诉jenkins脚本已干净地退出,没有错误。jenkins的robot插件将查看输出文件(output.xml),以确定构建是成功还是失败

    使用命令行选项--nostaturc 从robot版本2.5.7开始,您可以使用命令行选项
    --nostaturc
    ,这将导致robot始终“退出0”,无论有多少测试失败。您可以将此选项包括在jenkins工作中,如下所示:

    pybot --nostatusrc mytests.robot
    

    谢谢我和OP有同样的问题,你的答案也适用于我。我使用的是pabot而不是pybot,但幸运的是,pabot支持与pybot相同的命令行参数。我还通过jenkins运行Robot来测试一些功能。当机器人测试失败时,它的jenkins构建也会失败。我希望将构建标记为“不稳定”,而不是因为某些错误而失败(例如“无网络”,因为它更多地是基础设施问题,而不是导致测试失败的代码错误)。我设法用try-catch包装jenkins作业,并从python模块中引发特殊错误(例如,我引发了一个退出代码=3的错误),但当pybot失败时,其退出代码仍然是1。有没有办法告诉机器人传播退出代码@在脚本末尾的Bryan OakleyAn explicit
    exit 0
    很少有用。然后,shell将使用脚本中最后一条外部命令返回的任何退出代码退出。对于生产脚本,您通常希望shell在退出时出现来自外部命令的任何未处理错误<代码>设置-e在脚本开始时执行此操作,但不要盲目地执行此操作;这是一个很难驯服的野兽,如果你以前没有尝试过的话。@tripleee:我同意它很少有用,但OP特别询问如何使用零退出代码强制退出。这是一种罕见的情况,忽略最后一个命令的状态并强制退出代码为零是有用的。是的,我考虑的更多的是新访客而不是原来的OP。