我有一个配置文件,正在将其读入我的机器人测试用例中。该配置文件包含以下变量:
${DATABASE_IP} 127.0.0.1
${ORACLE_SYSTEM_ID} xe
${ORACLE_DATABASE_URL} jdbc:oracle:thin:@${DATABASE_IP}:1521:${ORACLE_SYSTEM_ID}
${ORACLE_DATABASE_USER} cooluser
${ORACLE_DATABASE_PASSWORD} coolpassword
${ORACLE_DATABASE_DRIVER} oracle.jdbc.driver.OracleDriver
Run Code Online (Sandbox Code Playgroud)
我希望能够做的一件事是更改其中一些属性,具体取决于脚本的执行位置。示例:詹金斯
看待这个问题的一个简单方法如下:
我有一个名为database_test.robot 的测试文件。
如果我在本地计算机上调用此文件,我想传递一个参数以确保 ${DATABASE_IP} 等于 127.0.0.1 。当詹金斯这样做时,我希望该值指向其他地方。
类似的东西已经存在于 maven 中,您可以在运行时指定配置文件。例如: mvn verify -Plocal-config ;mvn 验证-Pjenkins-config
我已经浏览了机器人框架文档,但似乎无法实现类似的东西。我看到的交换属性的唯一方法是删除旧属性并替换为新属性。注意:我有数百个不同的属性,除了 Jenkins 和 local 之外的其他几个环境也将采用不同的值。
Robot 为您提供了至少三种方法来解决这个问题:参数文件、变量文件和资源文件。在每种情况下,您都可以通过命令行参数指定要使用的环境设置。
顾名思义,参数文件是机器人可以从中读取参数的文件。它们是指定一组命令行参数的便捷方法。
例如,您可以创建一个“环境”文件夹,其中包含每个环境的参数文件(生产.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
Run Code Online (Sandbox Code Playgroud)
然后,要使用此配置运行,您可以使用-A或--argumentfile选项:
robot --argumentfile environments/local.args ...
Run Code Online (Sandbox Code Playgroud)
使用参数文件的优点是,当您只需要更改一个值时,您可以在命令行上覆盖单个值:
robot --argumentfile environments/local.args --variable ORACLE_DATABASE_USER:anotheruser
Run Code Online (Sandbox Code Playgroud)
此外,通过参数文件,您还可以指定任何其他命令行参数。例如,如果您总是想忽略 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"
Run Code Online (Sandbox Code Playgroud)
与其他两个解决方案非常相似,您可以为每个环境拥有单独的资源文件。由于 Robot 允许您在套件内的资源文件路径中使用变量,因此您可以使用变量来定义要使用的资源文件。
例如,您可以导入如下资源文件:
# some_tests.robot
*** Settings ***
Resource config/${environment}.robot
Run Code Online (Sandbox Code Playgroud)
然后,您可以像平常一样为每个环境创建一个配置文件(例如:config/local.robot、config/staging.robot 等)。然后,当您运行机器人时,您可以告诉它要使用哪个资源文件:
$ robot --variable environment:local ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3661 次 |
| 最近记录: |