1

以下是抱怨删除目录需要 1 或 2 个参数而我没有给出它。我使用的是 2.6.3,而 dcsLshLocation 是一个变量(并且在前面添加一个 x 不会改变错误)。我正在使用所有这些的Java版本。

*** Settings ***
| Documentation | http://jira.basistech.net:8080/browse/JEST-226
| Resource | src/main/resources/jug-shared-keywords.txt
| Force Tags | integration | 
| Suite Precondition | Run Keywords | 
|                    |   ...        | Validate SUT Installations |
|                    |   ...        | Launch Derby Server        | 
|                    |   ...        | Copy file ${jddInstallDir}/conf/jdd-conf-basic.xml to ${jddInstallDir}/conf/jdd-conf.xml
|                    |   ...        | Remove Directory  | ${dcsLshLocation} |
| Suite Teardown | Run Keywords | Shutdown Derby 
| Test Timeout | 20 minutes
4

1 回答 1

5

最初编写此问题时,运行关键字只能运行不带参数的关键字。这不再是真的。从文档中:

从 Robot Framework 2.7.6 开始,关键字也可以使用大写 AND 作为关键字之间的分隔符与参数一起运行。执行关键字,以便第一个参数是第一个关键字,并且在第一个 AND 是它的参数之前,将继续执行参数。第一个 AND 之后的第一个参数是第二个关键字,直到下一个 AND 的后续参数是它的参数。等等。

因此,问题中的代码可以这样表示:

| Suite Precondition | Run Keywords | 
|                    |   ...        | Validate SUT Installations
|                    |   ...        | AND | Launch Derby Server
|                    |   ...        | AND | Copy file ${jddInstallDir}/conf/jdd-conf-basic.xml to ${jddInstallDir}/conf/jdd-conf.xml
|                    |   ...        | AND | Remove Directory  | ${dcsLshLocation}

以下是该问题的原始答案,其他人可能仍然觉得有用。它仍然适用于 2.7.6 之前的机器人框架版本。

使用 时Run Keywords,不能运行带参数的关键字。诚然,文档有点不清楚,但这就是它所说的:

如果执行的关键字需要带参数,则必须使用用户关键字。

它应该说的是,当您使用 时Run Keywords,每个参数都是要运行的关键字的名称。这个关键字本身不能接受任何参数,因为机器人不知道一个关键字的参数在哪里结束,下一个关键字从哪里开始。

请记住,这...仅仅意味着上一行在下一行继续,所以虽然看起来每一行都是带有参数的单独关键字,但事实并非如此。你的例子是一样的:

| Suite Precondition | Run Keywords | 
|                    |   ...        | Validate SUT Installations |
|                    |   ...        | Launch Derby Server        | 
|                    |   ...        | Copy file ${jddInstallDir}/conf/jdd-conf-basic.xml to ${jddInstallDir}/conf/jdd-conf.xml
|                    |   ...        | Remove Directory  | 
|                    |   ...        | ${dcsLshLocation} |
于 2011-10-25T18:09:02.347 回答