【发布时间】:2019-05-31 23:05:30
【问题描述】:
问题陈述:
无法使用 CumulusCI 命令将多个变量值传递给我的测试用例:
`cci task run robot...
我指的是这个部分来构建我的命令:https://cumulusci.readthedocs.io/en/latest/tasks.html#id49
如果我必须以与上述相同的方式仅传递一个变量,例如。只是 LocalOrRemote,然后代码工作得很好,所以看起来这与我传递多个变量的方式有关。
我的测试自动化技术栈是 Robot Framework、CumulusCI、Selenium
示例代码:
*** Settings ***
Resource C:/Dev/myproject/robotframework/EnvironmentSetupFile.robot
Suite Setup Run Keywords Suite Setup KW1 AND Suite Setup OS And Browser ${LocalOrRemote} ${Browser}
*** Test Cases ***
Verify whether I am able to set environment and browser
[Tags] LocalEdge
[Documentation] This test should run on the local edge browser
Keyword X
Keyword Y
*** Keywords ***
Suite Setup KW1
do something
Suite Setup OS And Browser
[Arguments] ${LocalOrRemote} ${Browser}
Log Many ${LocalOrRemote} ${Browser}
run keyword if '${LocalOrRemote}'=='Local' Setup Local Browser ${Browser}
... ELSE IF '${LocalOrRemote}'=='Remote' Setup Remote Browser ${Browser}
... ELSE FAIL "Incorrect environment value passed! Please refer the instructions in README for running the test suite"
我用来调用我的测试的命令:
cci task run robot -o suites mypath/MyTestFile.robot -o include LocalEdge -o vars LocalOrRemote:Local,Browser:edge
我面临的问题:
${Browser} 的值没有作为边缘接收,而是默认为 chrome,这意味着该命令无法将我想要的值传递给 TC。
KEYWORD BuiltIn . Log Many ${LocalOrRemote}, ${Browser}
Documentation:
Logs the given messages as separate entries using the INFO level.
Start / End / Elapsed: 20190522 16:36:53.877 / 20190522 16:36:53.878 / 00:00:00.001
16:36:53.877 INFO Local
16:36:53.877 INFO chrome
【问题讨论】:
-
我一周前在salesforce stackexchange link 上添加了这个问题,但是还没有回答;因此希望把它贴在这里得到更多的关注。
-
我无法重现该问题。当我运行您的确切测试并提供缺少关键字的虚拟实现时,当我使用您在问题中显示的确切命令行时,测试会将“edge”记录为浏览器。也许是您的
Setup local kw1关键字正在改变${browser}的值。换句话说,传递多个变量的方式就是你的做法。 -
为了排除 cci 中的错误,我建议您从一个非常简单的测试开始,该测试只记录变量的值。我的猜测是,它们将显示在命令行上设置的值。然后,您可以开始重新添加代码以查看变量何时更改。也许是资源文件,也许是您的其他关键字之一。