第一次在这里发帖 我有一种感觉,这是一个非常愚蠢的问题,但由于某些原因,我的代码一直在失败,我只是无法指出错误.
这就是我所拥有的:
*** Settings ***
Library Selenium2Library
Library OperatingSystem
Library String
Library Collections
*** Test Cases ***
Test Robot Framework Logging
@{ALLOWED}= Create List /page1 /page2 /page3
${ControllersList}= Get File ${EXEC_DIR}/Resources/controllers.txt
@{PAGES}= Split to lines ${ControllersList}
:FOR ${PAGE} IN @{PAGES}
\ Run Keyword If '${PAGE} IN @{ALLOWED}' Log Testing WARN
[Teardown] Close Browser
Run Code Online (Sandbox Code Playgroud)
这是输出:
Evaluating expression ''/page1 IN [u'/page1', u'/page2', u'/page3']'' failed: SyntaxError: invalid syntax (<string>, line 1)
Run Code Online (Sandbox Code Playgroud)
如果我将条件更改为类似的东西,它会起作用:
'${PAGE} == /page1'
Run Code Online (Sandbox Code Playgroud)
我检查了文档,似乎可以使用IN条件.我完全迷失在这里.任何提示?谢谢!
这是表达式的正确方法:
Run Keyword If $PAGE in $ALLOWED Log Testing WARN
Run Code Online (Sandbox Code Playgroud)
通过删除引号和花括号,robot在评估表达式时能够将PAGE和ALLOWED视为python变量.
从BuiltIn库文档中的Evaluating Expressions部分:
从Robot Framework 2.9开始,变量本身在评估命名空间中自动可用.可以使用特殊的变量语法访问它们,而不需要像$ variable那样的花括号.永远不应该引用这些变量,事实上它们甚至不会在字符串中被替换.
此外,在使用类似关键字时Run Keyword If,表达式必须是变量替换后的有效python表达式.因此,您必须使用运算符in而不是IN.后者仅由机器人:FOR声明使用.
*** Variables ***
@{ALLOWED} /page1 /page2 /page3
*** Test Cases ***
Example that passes
${PAGE}= set variable /page1
Run Keyword If $PAGE in $ALLOWED
... pass execution ${PAGE} is allowed
fail ${PAGE} is not allowed
Example that fails
${PAGE}= set variable /page99
Run Keyword If $PAGE in $ALLOWED
... pass execution ${PAGE} is allowed
fail ${PAGE} is not allowed
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6455 次 |
| 最近记录: |