Robot 为您提供了至少三种解决此问题的方法:argument files、variable files 和 resource files。在每种情况下,您都可以通过命令行参数指定要使用的环境设置。
参数文件
参数文件,顾名思义,就是机器人可以从中读取参数的文件。它们是指定一组命令行参数的便捷方式。
例如,您可以创建一个“环境”文件夹,其中包含每个环境的参数文件(production.args、staging.args、local.args),并在该文件中设置所有变量的值.
例如,您可以创建一个名为 local.args 的文件,其内容如下:
--variable DATABASE_IP:127.0.0.1
--variable ORACLE_SYSTEM_ID:xe
--variable ORACLE_DATABASE_URL:jdbc:oracle:thin:@127.0.0.1:1521:xe
--variable ORACLE_DATABASE_USER:cooluser
--variable ORACLE_DATABASE_PASSWORD:coolpassword
--variable ORACLE_DATABASE_DRIVER:oracle.jdbc.driver.OracleDriver
然后,要使用此配置运行,您将使用 -A 或 --argumentfile 选项:
robot --argumentfile environments/local.args ...
使用参数文件的好处是,当您只需要更改一个值时,您可以在命令行上覆盖单个值:
robot --argumentfile environments/local.args --variable ORACLE_DATABASE_USER:anotheruser
此外,您还可以使用参数文件指定任何其他命令行参数。例如,如果您总是想忽略 CI 服务器上已知被破坏的测试,您可以包含类似 --exclude known-broken 的内容(其中 known-broken 是您已应用于一个或多个测试的标签)
参数文件的一个缺点是您不能根据先前变量的值定义变量(即:您不能这样做--variable FOOBAR=${FOO}bar)。我发现这不是什么大问题。
变量文件
变量文件以类似的方式工作,但允许您使用 python 定义变量。可变文件的优点是你可以做任何 python 让你做的事情。例如,您可以自动确定本地数据库的 IP,或者根据运行时条件选择性地打开或关闭功能。
定义变量文件的最简单方法是简单地创建 python 变量,机器人将通过导入文件找到该变量。
例如,变量的变量文件可能如下所示:
DATABASE_IP = "127.0.0.1"
ORACLE_SYSTEM_ID = "xe"
ORACLE_DATABASE_URL = " jdbc:oracle:thin:@%s:1521:%s % (DATABASE_IP, ORACLE_SYSTEM_ID)
ORACLE_DATABASE_USER} = "cooluser"
ORACLE_DATABASE_PASSWORD} = "coolpassword"
ORACLE_DATABASE_DRIVER} = "oracle.jdbc.driver.OracleDriver"
资源文件
与其他两个解决方案非常相似,您可以为每个环境拥有单独的资源文件。由于机器人允许您在套件内的资源文件路径中使用变量,因此您可以使用变量来定义要使用的资源文件。
例如,您可以像这样导入资源文件:
# some_tests.robot
*** Settings ***
Resource config/${environment}.robot
然后,您可以像往常一样为每个环境创建一个配置文件(例如:config/local.robot、config/staging.robot 等)。然后,当你运行机器人时,你可以告诉它使用哪个资源文件:
$ robot --variable environment=local ...