RobotFramework:超过启动关键字的最大限制

Posted

技术标签:

【中文标题】RobotFramework:超过启动关键字的最大限制【英文标题】:RobotFramework: Maximum limit of started keywords exceeded 【发布时间】:2014-10-10 07:06:05 【问题描述】:

我是 RobotFramework 的新手,我正在尝试做一个简单的测试。使用 Log 关键字打印“Hello world”并从 java 类中获取值(我在 Ride 上使用 jybot):

*** Settings ***
Library           robot.MyTest

*** Test Cases ***
Test1
    Log    Hello World    INFO
    Get Value

*** Keywords ***
Get Value
    Get Value

但是当我运行它时,测试不会通过,它会给我这个错误:

Starting test: MyTest.Test1
20140817 01:00:15.683 :  INFO : Hello world
20140817 01:00:15.798 :  FAIL : Maximum limit of started keywords exceeded.
Ending test:   MyTest.Test1

我已经搜索过了,但我仍然没有任何线索。

【问题讨论】:

【参考方案1】:

您的测试调用关键字Get Value,它调用关键字Get Value。你已经创建了一个无限递归。 Get Value 调用 Get Value 调用 Get Value 调用 Get Value 调用 ...

最好的解决方案是最简单的:不要创建一个自称的关键字。如果已经有一个具有给定名称的关键字,请不要创建另一个具有相同名称的关键字。虽然您可以让两个同名的测试用例正常工作,但这会使您的测试用例更难理解。

如果您有另一个名为 Get Value 的关键字,并且您必须有两个具有相同名称的关键字,您可以提供完全限定的名称,这样机器人就不会再次调用相同的关键字。例如,如果您的Get Value 试图从robot.myTest 调用Get Value,请这样调用:

*** Keywords ***
Get Value
    robot.myTest.Get Value

【讨论】:

如果我不想创建另一个关键字,你是说我应该只有这个:***设置***库robot.MyTest***测试用例***Test1获取价值 *** 关键字 *** @Lucas:我是说如果你要创建一个新关键字,不要给它与现有关键字相同的名称。如果robot.myTest 已经定义了一个名为Get Value 的关键字,则无需在测试用例文件中也创建一个同名关键字。 感谢您的帮助。问题是,我不想再创造一个。我只想在 MyTest 类上使用它,但是当我尝试使用它时,ride 会抛出此异常:FAIL : No keyword with name 'Get Value' found。这就是我尝试在关键字部分创建的原因。我也收到此错误:导入测试库 'robot.MyTest' 失败:ImportError: No module named robot @Lucas:那么您遇到的问题与您在这里提出的问题不同。虽然我成功地回答了这个问题,但听起来你真正的问题是你无法导入你的库。您应该将其作为一个单独的问题提出。 你说得对,赞。我只需要找到一种方法来导入包含所有类的完整 jar。如果声明 java 类(例如 Library robot.MyTest \r\n Library robots.MyTest2 \r\n 等,我只能使用关键字)。

以上是关于RobotFramework:超过启动关键字的最大限制的主要内容,如果未能解决你的问题,请参考以下文章

如何设置robotframework的快捷键

RobotFramework 关键字变量未设置

RobotFramework之Python调用RF关键字

robotframework用户关键字创建过程

Robotframework:等待关键字成功的使用

robotframework列表长度限制