robotframework - 机器人框架 : Configuration Profiles

标签 robotframework

我有一个配置文件,我正在阅读我的机器人测试用例。此配置文件包含以下变量:

${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

我希望能够做的一件事是更改其中一些属性,具体取决于脚本的执行位置。示例: Jenkins

一个简单的方法来看待这个,是这样说的:

我有一个名为 database_test.robot 的测试文件。

如果我在本地机器上调用这个文件,我想传入一个参数以确保 ${DATABASE_IP} 等于 127.0.0.1 。当 Jenkins 这样做时,我希望该值指向其他地方。

maven 中已经存在这样的东西,您可以在运行时指定配置文件。例如: mvn verify -Plocal-config ; mvn verify -Pjenkins-config

我已经浏览了机器人框架文档,但似乎无法实现类似的东西。交换我看到的属性的唯一方法是删除旧的并替换新的。注意:我有数百个不同的属性,除了 Jenkins 和 local 之外的其他几个环境将采用不同的值。

最佳答案

机器人至少为您提供了三种解决方法:argument files , variable files , 和 resource files .在每种情况下,您都可以通过命令行参数指定要使用的环境设置。

参数文件

顾名思义,参数文件是机器人可以从中读取参数的文件。它们是指定一组命令行参数的便捷方式。

例如,您可以创建一个“environments”文件夹,其中包含每个环境(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  ...

关于robotframework - 机器人框架 : Configuration Profiles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46531848/

相关文章:

pycharm - 使用 Robot Framework 在 PyCharm 上运行测试

python-3.x - 将字典作为参数传递给 RobotFramework 测试

global-variables - Robot Framework - 使用资源文件

python - 下载用于 selenium 测试的 chrome 扩展

selenium - 如何使用 Selenium 查找包含的元素

javascript - 尝试打开新的浏览器窗口时如何避免 Javascript 超时异常?

robotframework - 如何编写一个循环来重复检查元素文本直到它发生变化?

docker - 机器人框架-如何查看在Shell中执行的命令的输出?

selenium - 使用Robot Framework创建一个空列表并在迭代中推送数据

python - python 中的中缀参数关键字