机器人框架可以支持外部变量吗?

时间:2015-06-18 14:17:25

标签: robotframework modularity

我正在尝试创建一个中心文件,其中包含我们在测试用例中使用的所有变量(例如,$ {BROWSER}变量)。

我还为很多自定义关键字创建了一个中心文件,我正在尝试使用中央变量文件作为中心关键字文件的资源...模块化可以这么说

然而,关键字不会运行,因为中心文件中的变量无法识别。

所以我的问题是,有没有人成功地在RF测试资源/案例中调用外部变量?如果是这样,你能解释一下你是怎么做到的吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

有几种方法,都在Robot Framework Users Guide中记录。

使用命令行参数

您可以使用command line options( - variable)选项在命令行上定义变量。例如:

pybot --variable FOO:hello mysuite.robot

您可以通过将变量放在参数文件中来定义多个变量,然后可以在命令行中使用--argumentfile选项包含参数文件。

例如,您可以创建一个名为“variables.args”的文件,如下所示:

--variable FOO:Hello
--variable BAR:World

然后您可以在命令行中使用此文件,如下所示:

pybot --argumentfile variables.args mysuite.robot

我的团队非常依赖这一点。我们有两类参数文件: environment scenario 。在环境文件中,我们放置了该环境独有的URL,用户名,密码等。在场景文件中,我们将为该场景添加唯一的东西,例如${BROWSER}的定义,要运行的套件等。然后,我们的pybot命令非常简单:`pybot --argumentfile environment / qa1。 args --argumentfile scenario / chrome_smoke_test.args

使用变量文件

如果您的中心文件是python脚本,则可以通过在设置中包含该文件来访问所有变量。这些被称为variable files

例如,您可以创建一个如下所示的文件名“variables.py”:

FOO = "Hello"
BAR = "World"

然后您可以在测试套件中使用该文件,如下所示:

*** Settings ***
| Variables | variables.py

*** Test Cases ***
| Example
| | Should be equal | ${FOO} | Hello
| | Should be equal | ${BAR} | World

使用资源文件

另一种方法是在resource files中定义变量。资源文件允许您使用机器人语法来定义变量。

例如,您可以创建名为“variables.robot”的文件,如下所示:

*** Variables ***
| ${FOO} | Hello
| ${BAR} | World

然后,您可以将其包含在这样的测试中:

*** Settings ***
| Resource | Variables.robot

*** Test Cases ***
| Example
| | Should be equal | ${FOO} | Hello
| | Should be equal | ${BAR} | World

使用环境变量

使用外部变量的另一种方法是定义environment variables。访问变量时,可以使用%而不是$访问环境变量。

例如,假设您已定义环境变量HOME,则可以在测试中将其作为%{HOME}进行访问。