标量为最常用的类型,标量在大部分情况下是字符串形式,在使用时将变量名替换为其值。
列表变量,列表中的元素可以为任何类型,列表的访问从 0 开始。
字典,同列表一样,字典的值和键可以为任何元素,字典是无序的,通过键值进行访问。
环境变量,robot framework 可以直接访问系统的环境变量。
*** Test Cases ***
Environment variables
Log Current user: %{USER}
Run %{JAVA_HOME}${/}javac
# 怎样定义变量
在变量表格中定义
> 推荐将一些公用的变量用此方法定义。
*** Variables ***
${NAME} Robot Framework
${VERSION} 2.0
${ROBOT} ${NAME} ${VERSION}
@{NAMES} Matti Teppo
&{USER 1} name=Matti address=xxx phone=123
使用 Set 关键字定义
*** Test Cases ***
using set keywords
${hi} = Set Variable Hello, world!
${Global_Var} = Set Glabal Variable Hello, world!
${Suite_Var} = Set Suite Variable Hello, world!
${Test_Var} = Set test Variable Hello, world!
命令行方式
> 一些和测试环境有关或其它变量,可以通过命令行去定义,该变量为全局变量,全局有效。
robot . --variable HOST:localhost:7272 --variable USER:robot
关键字返回
*** Test Cases ***
Returning
${x} = Get X an argument
@{list} = Create List first second third
&{dict} = Create Dictionary first=1 second=${2} ${3}=third
${a} ${b} ${c} = Get Three
# 变量如何使用
关键字的参数
> 变量可以直接作为参数传递给关键字。
*** Test Cases ***
Objects
KW 1 ${STR}
> 根据变量的值判定测试结果
assert result
Should Be True ${status}
> 根据变量的值,选择不同的操作关键字
assert result
Run Keyword If '${text}'=='123' log 222
> Robot Framework 提供一些内置变量,包括操作系统,数字以及自动化等。
- 操作系统变量
${CURDIR}
当前测试文件的绝对路径,大小写敏感
${TEMPDIR}
临时文件的绝对路径,linux 系统上为
/tmp
,windows 上是
c:\Documents and Settings<user>\Local Settings\Temp
${EXECDIR}
开始执行测试时所在文件夹的绝对路径
系统路径分隔符,linux 上为/,Windows 上为\
系统路径分隔符,Linux 上为:,Windows 上为;
${\n}
系统文件行分割符,Linux 上为\n,Windows 上为\r\n
*** Test Cases ***
Example
Create Binary File ${CURDIR}${/}input.data Some text here${\n}on two lines
Set Environment Variable CLASSPATH ${TEMPDIR}${:}${CURDIR}${/}foo.jar
- 数字变量
*** Test Cases ***
Example 1A
Connect example.com 80 # Connect gets two strings as arguments
Example 1B
Connect example.com ${80} # Connect gets a string and an integer
Example 2
Do X ${3.14} ${-1e-4} # Do X gets floating point numbers 3.14 and -0.0001
- 布尔和 None/Null 变量
> python 中的 None 和 JAVA 中的 Null 都可以作为 Robot Framwork 的内置变量。
*** Test Cases ***
Boolean
Set Status ${true} # Set Status gets Boolean true as an argument
Create Y something ${false} # Create Y gets a string and Boolean false
Do XYZ ${None} # Do XYZ gets Python None as an argument
${ret} = Get Value arg # Checking that Get Value returns Java null
Should Be Equal ${ret} ${null}
- 空格和空变量
*** Test Cases ***
One space
Should Be Equal ${SPACE} \ \
Four spaces
Should Be Equal ${SPACE * 4} \ \ \ \ \
Ten spaces
Should Be Equal ${SPACE * 10} \ \ \ \ \ \ \ \ \ \ \
Quoted space
Should Be Equal "${SPACE}" " "
Quoted spaces
Should Be Equal "${SPACE * 2}" " \ "
Empty
Should Be Equal ${EMPTY} \
- 自动化变量
> 自动化变量在测试执行过程中可能值会变化,也有一些变量是在特定时期可用。
${TEST NAME}
当前测试用例的名称
测试用例内
@{TEST TAGS}
当前测试用的 Tags
测试用例内
${TEST DOCUMENTATION}
当前测试用例的文档
测试用例内
${TEST STATUS}
当前测试用例的测试结果,PASS 或 FAIL
Test teardown
${TEST MESSAGE}
当前测试用的的测试结果信息
Test teatdown
${PREV TEST NAME}
上一条测试用例的名称,如果没有则值为空
${PREV TEST STATUS}
上一条测试用例的结果,如果没有则值为空
${PREV TEST MESSAGE}
上一条测试用例的结果信息,如果没有则值为空
${SUITE NAME}
当前测试集的全称
${SUITE SOURCE}
当前测试集的绝对路径
${SUITE DOCUMENTATION}
当前测试集的描述,可以通过Set Suite Documentation 修改
&{SUITE METADATA}
当前测试集的 METADATA,可以通过Set Suite Metadata修改
${SUITE STATUS}
当前测试集的测试状态
Suite teardown
${SUITE MESSAGE}
当前测试集的测试状态信息
Suite teardown
${KEYWORD STATUS}
当前关键字的状态
Keyword teardown
${KEYWORD MESSAGE}
当前关键字的状态信息
Keyword teardown
${LOG LEVEL}
当前的日志级别
${OUTPUT FILE}
output 文件的绝对路径
${LOG FILE}
log 文件的绝对路径,如果没有则为 None
${REPORT FILE}
report 文件的绝对路径,如果没有则为 None
${DEBUG FILE}
debug 文件的绝对路径,如果没有则为 None
${OUTPUT DIR}
output 文件夹的绝对路径
变量的优先级
内置变量-->>测试中定义-->>命令行中定义-->>变量表格-->>资源文件
命令行中定义的变量在测试开始执行前被定义,定义的变量会覆盖测试文件变量表格和资源文件中定义的变量。
测试文件变量表格中定义的变量,在当前测试文件中全局可用,可能会覆盖资源文件和变量文件中的变量。
资源文件和变量文件中定义的变量在测试文件中优先级最低,如果他们之间存在重复,则最先引入的文件的变量优先级最高。
测试执行中定义的变量拥有最高优先级,但它的作用域仅限于当前测试。
内置变量不可被覆盖。
# 变量的作用域
> 命令行中或使用Set Global Variable定义的变量为全局变量,在任意地方都可以使用,另外内置变量也是一种全局变量
测试集变量
> 在变量表格,引入的资源或变量文件以及使用Set suite Variable定义的变量为测试集变量,在测试集内可用。
测试用例变量
> 由Set Test Variable定义的变量为测试用例变量,测试用例范围内,包括关键字都可以使用,初始状态下没有变量为此类变量。
> 测试用例或关键字中由关键字返回或关键字参数的变量,该变量只能在测试用例或关键字范围内可用。
[ WARN ] Automatically parsing other than '.robot' files is deprecated. Convert 'D:\PythonProject\DemoCases\Testcases\demo.txt' to '.robot' format or use '--extension' to explicitly configure which files to parse.
[ ERROR ] Suite 'Testcases' contains no tests named ''.
Robot Run SingleTestCase/Robot Run TestSuite 都设置的同一路径
arguments: -d results -t "$SelectedText$" ./
Working directory: $FileDir$
应该是路径错了,