关键字通用形式
:FOR | ...... | IN | ... |
---|---|---|---|
keyWord |
普通for循环
Starting test:
* INFO : cat
* INFO : dog
* INFO : @{list} = [ abc | efg ]
* INFO : abc
* INFO : efg
Ending test:
For-in-range循环
Starting test:
* INFO : 0
* INFO : 1
* INFO : 2
* INFO : 3
* INFO : 4
* INFO : 5
* INFO : 6
* INFO : 7
* INFO : 8
* INFO : 9
Ending test:
FOR---IN RANGE支持设置开始、结束、步频长,格式为:FOR 循环变量 IN RANGE start end step
。
Starting test:
* INFO : 10
* INFO : 11
* INFO : 12
* INFO : 13
* INFO : 14
* INFO : ==================================================
* INFO : 10
* INFO : 12
* INFO : 14
* INFO : 16
* INFO : 18
Ending test:
For-in-enumerate循环
有些时候需要知道当前循环中的循环位置的index编号,此时可以使用IN ENUMERATE。
Starting test:
* INFO : @{list} = [ Tom | May | Miker ]
* INFO : 0+Tom
* INFO : 1+May
* INFO : 2+Miker
Ending test:
另外,IN ENUMERATE支持多变量循环,当循环体变量能够被变量值整除时,可以使用该特性。
Starting test:
* INFO : 0+a+b+c
* INFO : 1+bird+cat+dog
* INFO : 2+Tom+May+Miker
Ending test:
For-in-zip 循环
对于有些测试来说,可能会用到多个列表的数据,在循环中需要对这些数据进行组合使用。Robot Framework提供了一个叫做For-in-zip的关键字,该关键字来自于python内置的zip函数,可用于对列表进行组合。
即多个LIST组合使用一个for循环,注意,此处循环体中需要将list变量用scalar形式。
Starting test:
* INFO : @{animalList} = [ bird | cat | dog ]
* INFO : @{nameList} = [ Tom | May | Miker ]
* INFO : animal: bird
* INFO : name: Tom
* INFO : animal: cat
* INFO : name: May
* animal: dog
* name: Miker
Ending test:
嵌套循环
Robot Framework的for 循环本身不支持嵌套循环,但可以通过封装关键字进行嵌套循环。
Test Case:
User keyword:
result:
Starting test:
* INFO : @{animalList} = [ bird | cat | dog ]
* INFO : @{nameList} = [ Tom | May | Jack ]
* INFO : @{list} = [ [u'bird', u'cat', u'dog'] | [u'Tom', u'May', u'Jack'] ]
* INFO : 0
* INFO : bird
* INFO : cat
* INFO : dog
* INFO : 1
* INFO : Tom
* INFO : May
* INFO : Jack
Ending test:
跳出循环
一般来说一个循环结构的用例需要遍历完所有数据后再退出。某些情况下,需要提前终止并跳出循环时,可以使用Exit For Loop
或者 Exit For Loop If
。
Starting test:
* INFO : @{animalList} = [ bird | cat | dog ]
* INFO : @{nameList} = [ Tom | May | Jack | Jone ]
* INFO : bird
* INFO : Exiting for loop altogether.
* INFO : Tom
* INFO : May
* INFO : Exiting for loop altogether.
Ending test:
循环内continue跳过
有些时候,需要在循环中使用continue来跳过循环结构体中的某些过程。在Robot Framework中,可以使用Continue For Loop
或者 Continue For Loop If
。
Starting test:
* INFO : @{animalList} = [ bird | cat | dog ]
* INFO : @{nameList} = [ Tom | May | Jack | Jone ]
* INFO : bird
* INFO : Continuing for loop from the next iteration.
* INFO : dog
* INFO : Tom
* INFO : May
* INFO : Continuing for loop from the next iteration.
* INFO : Jone
Ending test:
Repeat Keyword 关键字循环
某些情况下,循环结构可能只需要对一个关键字做执行次数的循环。Robot Framework提供了一个关键字Repeat Keyword,只需指明循环次数和循环中的关键字即可。而在描述循环次数时,有时为了让测试用例易于理解,可以在次数后面添加一个times 或 x。