==
test case 风格==
前面写的几个case都是关键字驱动(keyword-driven
)一步一步关键字顺序执行。RF另一种风格就是数据驱动(data-driven)修改demo.robot的Fourth Case如下:
*** Settings ***
[Documentation] Example test cases using the keyword-driven testing approach.
*** Variables ***
${var1} value
@{list1} a b c d
&{dict1} key1=sf key2=${list1}
*** Test Cases ***
First Case
Log to console ${var1}
Log to console ${list1}[0]
Log to console ${list1[0]}
Log to console ${dict1}['key1']
Log to console ${dict1['key1']}
Log to console ${dict1.key1}
Second Case
Calculate and Check Equals
Calculate and Check Equals 1+5
Calculate and Check Equals 7-2 ${5}
Calculate and Check Equals expression=6+3 expected=${9}
Third Case
Varargs keyword a f ${var1}
Varargs keyword @{list1} ${var1}
Kwargs keyword key1=value1 key2=789
Kwargs keyword &{dict1}
Kwargs keyword &{dict1} mykey=tututu &{dict1}
Fourth Case
[Documentation] data-driven case
[Template] Calculate "${expression}" and Check Equals "${expected}"
2+4 ${6}
9-2 ${7}
6*4 ${24}
*** Keywords ***
Calculate and Check Equals
[Arguments] ${expression}=3+3 ${expected}=${6}
${res} Evaluate ${expression}
Log to console expression = ${expression}
Log to console result = ${res}
Should Be Equal ${res} ${expected}
Varargs keyword
[Arguments] @{args}
Log to console --------
: FOR ${item} IN @{args}
\ Log to console ${item}
Kwargs keyword
[Arguments] &{kwargs}
Log to console --------
: FOR ${item} IN @{kwargs.items()}
\ Log to console ${item}
Calculate "${expression}" and Check Equals "${expected}"
Calculate and Check Equals ${expression} ${expected}
运行robot -t “Second Case” demo.robot得到如下结果:
通过case中设置Template使得关键字可以不止一次的执行,同时将测试步骤执行流程隐藏,专注于输入数据。data-driven比较适合接口的测试,针对同一操作不同的数据反复进行访问。这样写还有个好处提高了代码的可维护性,比如关键字的名字变化了,只需要修改template中一行就可以,不像second case中每行都要替换。
RF中还有一种风格是行为驱动(
Behavior-driven),我也没用过,感觉就是关键字前加些固定的词使case更容易理解,(Given,When,and,Then
)执行的时候是被去掉的, 撸个例子占个坑。
*** Test Cases ***
Valid Login
Given login page is open
When valid username and password are inserted
and credentials are submitted
Given login page is open
When valid username and password are inserted
and credentials are submitted
Then welcome page should be open