(二)robotfromwork自动化--BuiltIn库翻译

本文主要介绍了RobotFramework的BuiltIn库,它包含了许多用于逻辑控制和判断的关键字,如Evaluate用于执行Python表达式,Should系列关键字用于断言比较,Convert To系列关键字用于类型转换,Run Keyword系列关键字实现条件执行,以及Exit For Loop和Wait Until Keyword Succeeds等。这些关键字在编写测试用例时非常实用。
摘要由CSDN通过智能技术生成

作为一门表格语言,为了保持简单的结构,RF没有像别的高级语言那样提供类似if else while等内置关键字来实现各种逻辑功能,而是提供给了用户BuiltIn库。如果用户想在测试用例中实现比较复杂的逻辑,那就需要对BuiltIn中的重要关键字有一些了解。BuiltIn库中还封装了很多常见方法和能够控制RF运行状态的关键字,如果想用好RF,一定要对BuiltIn库中的函数有一个比较全面的理解。下面就带着大家认识一下BuiltIn库中比较重要的关键字。

Evaluate 关键字:

Arguments:[ expression | modules=None | namespace=None ]Evaluates the given expression in Python and returns the results.

如果你需要进行一些数值运算并得到结果,你就需要用到Evaluate关键字。Evaluate会把你想要计算的表达式直接传递给Python,并把Python的计算结果返回给你。这是最经常要用到的。

Should 系列关键字:

Should系列关键字是Should打头的一系列关键字。

Should Be Empty--------验证给定项是否为空。
Should Be Equal--------如果给定的对象不相等则失败。 

Should Be Equal As Integers --------如果将对象转换(转换)为整数后对象不相等则失败。
Should Be Equal As Numbers--------如果将对象转换(转换)为实数后对象不相等则失败。

Should Be Equal As Strings--------如果对象在将它们转换(转换)为字符串后不相等则失败。 
Should Be True--------如果给定条件(状态)不成立则失败。

Should Contain--------参数:[ container | item | msg=None | values=True | ignore_case=False ]果容器一次或多次不包含(包含)项,则失败。
Should Contain X Times--------参数:[ item1 | item2 | count | msg=None | ignore_case=False ]如果item1不包含item2计数次数,则失败。
Should End With--------参数:[ str1 | str2 | msg=None | values=True | ignore_case=False ]如果字符串str1没有以字符串str2结尾,则失败。
Should Match--------参数:[ string | pattern | msg=None | values=True | ignore_case=False ]除非给定的字符串与给定的模式匹配,否则失败。

Should Match Regexp --------参数:[ string | pattern | msg=None | values=True ]如果字符串与作为正则表达式的模式不匹配,则失败(正则表达式).

Should Start With--------参数:[ str1 | str2 | msg=None | values=True | ignore_case=False ]如果字符串str1不以字符串str2开头,则失败。

Should Not Be Empty
Should Not Be Equal
Should Not Be Equal As Integers
Should Not Be Equal As Numbers
Should Not Be Equal As Strings
Should Not Be True
Should Not Contain
Should Not End With
Should Not Match
Should Not Match Regexp
Should Not Start With

这些关键字都是用作判断时用的,每个用例都会用到,比如我们的执行结果得到了一个字符串,我们要判断这个字符串要与一个预期字符串相等,否则用例就无法通过,这时候,肯定会用上Should Be Equal As String关键字,其它关键字我们通过关键字的名字就能顾名思义,知道它的作用。

Convert To系列关键字:

Convert To Binary
Convert To Boolean
Convert To Hex 
Convert To Integer 
Convert To Number 
Convert To Octal 
Convert To String

做类型转换,将某个值转换为相对应的类型。

Run keyword系列关键字:

Run Keyword If------Arguments:[ condition | name | *args ]如果condition为true,则使用给定的参数运行给定的关键字。
Run Keyword If All Critical Tests Passed
Run Keyword If All Tests Passed
Run Keyword If Any Critical Tests Failed
Run Keyword If Any Tests Failed
Run Keyword If Test Failed
Run Keyword If Test Passed
Run、Keyword If Timeout Occurred

这些关键字能根据一个判断条件的真假来看是否执行关键字。一般使用这些关键字来实现高级语言中的ifelse功能。最常用的是Run Keyword If 和 Run Keyword unless 他们俩实现的效果正好相反。

Exit For Loop关键字:

用作退出循环,一般和Run Keyword If关键字联合使用,来实现条件退出。

Wait Until Keyword Succeeds关键字:

这是一个将异步调用变为同步调用的关键字。举一个例子:如果call某个WebService,并且需要得到返回结果才能做下一部操作。我们就会用到这个关键字

比如日期相关的关键字GetTime。让测试暂停的Sleep等。都相当有用。

RF目前仅有2个内置关键字:FOF 和 IN,来实现循环结构。功能还是比较弱的。

Keywords

Keyword Arguments Documentation
Call Method

object,

method_name

,*args

, **kwargs

使用提供的参数调用给定对象的命名方法。

返回方法的可能返回值,并将其分配给变量。如果对象没有具有给定名称的方法或者执行该方法引发异常,则关键字都会失败。

支持**kwargsRobot Framework 2.9中的新功能。因为其他参数中可能的等号必须用反斜杠转义\=

例子:

Call Method ${hashtable} put myname myvalue
${isempty} = Call Method ${hashtable} isEmpty  
Should Not Be True ${isempty}      
${value} = Call Method ${hashtable} get myname
Should Be Equal ${value} myvalue    
Call Method ${object} kwargs name=value foo=bar
Call Method ${object} positional escaped\=equals  
Catenate *items

将给定的项目连接在一起并返回结果字符串。

默认情况下,项目用空格连接,但如果第一项包含字符串SEPARATOR=<sep><sep>则使用分隔符。必要时,项目将转换为字符串。

例子:

${str1} = Catenate Hello world  
${str2} = Catenate SEPARATOR=--- Hello world
${str3} = Catenate SEPARATOR= Hello world

=>

${str1} = 'Hello world'
${str2} = 'Hello---world'
${str3} = 'Helloworld'
Comment *messages

将日志文件中的给定消息显示为关键字参数。

此关键字对其接收的参数不起任何作用,但由于它们在日志中可见,因此该关键字可用于显示简单消息。鉴于参数被彻底忽略,它们甚至可以包含不存在的变量。如果您对变量值感兴趣,可以使用LogLog Many关键字。

Continue For Loop  

跳过当前的循环迭代并从下一个继续。

跳过当前for循环迭代中的剩余关键字,并从下一个继续。可以直接在for循环中使用,也可以在循环使用的关键字中使用。

例:

:FOR ${var} IN @{VALUES}
  Run Keyword If '${var}' == 'CONTINUE' Continue For Loop
  Do Something ${var}  

要在不使用Run Keyword If或其他包装关键字的情况下有条件地继续for循环。请参阅Continue For Loop If

New in Robot Framework 2.8.

Continue For Loop If condition

如果condition为true ,则跳过当前for循环迭代。

Continue For Loop的包装器根据给定条件继续for循环。使用与Should Be True关键字相同的语义来评估条件。

例:

:FOR ${var} IN @{VALUES}
  Continue For Loop If '${var}' == 'CONTINUE'  
  Do Something ${var}  

New in Robot Framework 2.8.

Convert To Binary

item, 

base=None,

prefix=None,

length=None

将给定项转换为二进制字符串。

item,带有可选的base,首先被转换为使用整数转换为整型内部。之后,它被转换为二进制数(基数2),表示为字符串,如1011

返回的值可以包含一个可选项,prefix并且可以要求最小值length(不包括前缀和可能的减号)。如果该值最初短于所需长度,则用零填充。

例子:

${result} = Convert To Binary 10     # Result is 1010
${result} = Convert To Binary F base=16 prefix=0b # Result is 0b1111
${result} = Convert To Binary -2 prefix=B length=4 # Result is -B0010

See also Convert To IntegerConvert To Octal and Convert To Hex.

Convert To Boolean item

将给定项转换为布尔值true或false。

按预期处理字符串TrueFalse(不区分大小写),否则使用Python的方法返回项的真值bool()

Convert To Bytes

input,

input_type=text

input根据要求将给定转换为字节input_type

下面列出了有效的输入类型:

  • text:逐个字符地将文本转换为字节。可以使用序号低于256的所有字符,并将其转换为具有相同值的字节。许多角色最容易使用\x00或等代码表示\xff。支持Unicode字符串和字节。
  • int:将由空格分隔的整数转换为字节。类似地,与转换为整数,也可以通过添加前缀的值使用二进制,八进制,或十六进制值0b0o0x分别。
  • hex:将十六进制值转换为字节。单字节总是两个字符长(例如01FF)。空格被忽略,可以作为可视分隔符自由使用。
  • bin:将二进制值转换为字节。单字节总是八个字符长(例如00001010)。空格被忽略,可以作为可视分隔符自由使用。

除了将输入作为字符串提供外,还可以使用包含单个字符或数字的列表或其他迭代。在这种情况下,数字不需要填充到一定长度,并且它们不能包含额外的空格。

示例(最后一列显示返回的字节):

${bytes} = Convert To Bytes hyvä   # hyv\xe4
${bytes} = Convert To Bytes \xff\x07   # \xff\x07
${bytes} = Convert To Bytes 82 70 int # RF
${bytes} = Convert To Bytes 0b10 0x10 int # \x02\x10
${bytes} = Convert To Bytes ff 00 07 hex # \xff\x00\x07
${bytes} = Convert To Bytes 5246212121 hex # RF!!!
${bytes} = Convert To Bytes 0000 1000 bin # \x08
${input} = Create List 1 2 12
${bytes} = Convert To Bytes ${input} int # \x01\x02\x0c
${bytes} = Convert To Bytes ${input} hex # \x01\x02\x12

如果需要使用特定编码将文本转换为字节,请String库中使用Encode String To Bytes

New in Robot Framework 2.8.2.

Convert To Hex

item, 

base=None,

prefix=None,

length=None,

lowercase=False

将给定项转换为十六进制字符串。

item,带有可选的base,首先被转换为使用整数转换为整型内部。之后,它被转换为十六进制数字(基数16),表示为字符串,如FF0A

返回的值可以包含一个可选项,prefix并且可以要求最小值length(不包括前缀和可能的减号)。如果该值最初短于所需长度,则用零填充。

默认情况下,该值作为大写字符串返回,但lowercase参数为true值(请参阅布尔参数)将值(但不是给定的前缀)转换为小写。

例子:

${result} = Convert To Hex 255     # Result is FF
${result} = Convert To Hex -10 prefix=0x length=2 # Result is -0x0A
${result} = Convert To Hex 255 prefix=X lowercase=yes # Result is Xff

See also Convert To IntegerConvert To Binary and Convert To Octal.

Convert To Integer

item, 

base=None

将给定项转换为整数。

如果给定的项是字符串,则默认情况下它应该是基数为10的整数。有两种方法可以从其他基数转换:

  • 明确将base作为base参数提供给关键字。
  • 用基数作为给定字符串的前缀,这0b意味着二进制(基数2),0o意味着八进制(基数8),0x意味着十六进制(基数16)。只有在base没有给出参数时才会考虑前缀,并且前缀本身可能带有加号或减号前缀。

语法不区分大小写,可能的空格被忽略。

例子:

${result} = Convert To Integer 100   # Result is 100
${result} = Convert To Integer FF AA 16 # Result is 65450
${result} = Convert To Integer 100 8 # Result is 64
${result} = Convert To Integer -100 2 # Result is -4
${result} = Convert To Integer 0b100   # Result is 4
${result} = Convert To Integer -0x100   # Result is -256

See also Convert To NumberConvert To BinaryConvert To OctalConvert To Hex, and Convert To Bytes.

Convert To Number

item,

precision=None

将给定项转换为浮点数。

如果可选项precision为正数或零,则返回的数字将四舍五入为该十进制数字。负精度意味着数字四舍五入到绝对精度的最大倍数10。如果一个数字同样接近某个精度,则它总是从零开始舍入。

例子:

${result} = Convert To Number 42.512   # Result is 42.512
${result} = Convert To Number 42.512 1 # Result is 42.5
${result} = Convert To Number 42.512 0 # Result is 43.0
${result} = Convert To Number 42.512 -1 # Result is 40.0

请注意,机器通常无法准确存储浮点数。这可能会导致这些数字出现意外情况,也可能会出现意外情况。有关更多信息,请参阅,例如,这些资源:

如果需要整数,请改用 Convert To Integer 

Convert To Octal

item, 

base=None,

prefix=None,

length=None

将给定项转换为八进制字符串。

item,带有可选的base,首先被转换为使用整数转换为整型内部。之后,它被转换为八进制数字(基数8),表示为字符串,如775

返回的值可以包含一个可选项,prefix并且可以要求最小值length(不包括前缀和可能的减号)。如果该值最初短于所需长度,则用零填充。

例子:

${result} = Convert To Octal 10     # Result is 12
${result} = Convert To Octal -F base=16 prefix=0 # Result is -017
${result} = Convert To Octal 16 prefix=oct length=4 # Result is oct0020

See also Convert To IntegerConvert To Binary and Convert To Hex.

Convert To String item

将给定项转换为Unicode字符串。

用途__unicode____str__方法与Python对象和toString与Java对象。

如果需要使用不同的编码在Unicode和字节字符串之间进行转换,请使用Encode String To BytesDecode Bytes To StringString库中的关键字。如果您只想创建字节字符串,请使用Convert To Bytes

Create Dictionary *items

根据给定的内容创建并返回字典items

通常使用与在Variable表中创建变量key=value相同的方法给出项&{dictionary}。键和值都可以包含变量,并且可以使用反斜杠转义可能的等号键escaped\=key=value。也可以通过简单地使用它们来从现有词典中获取项目&{dict}

或者,可以指定项目,以便分别给出键和值。这个和key=value语法甚至可以组合在一起,但必须先单独给出项目。

如果多次使用相同的键,则最后一个值具有优先权。返回的字典是有序的,带字符串作为键的值也可以使用方便的点访问语法来访问${dict.key}

例子:

&{dict} = Create Dictionary key=value foo=bar     # key=value syntax
Should Be True ${dict} == {'key': 'value', 'foo': 'bar'}          
&{dict2} = Create Dictionary key value foo bar # separate key and value
Should Be Equal ${dict} ${dict2}        
&{dict} = Create Dictionary ${1}=${2} &{dict} foo=new   # using variables
Should Be True ${dict} == {1: 2, 'key': 'value', 'foo': 'new'}          
Should Be Equal ${dict.key} value       # dot-access

这个关键字在Robot Framework 2.9中以多种方式进行了更改:

  • Collections图书馆搬到了BuiltIn
  • key=value语法中也支持非字符串键。
  • 返回的字典是有序且可点访问的。
  • 不推荐使用分别给出键和值的旧语法,但后来在RF 3.0.1中删除了弃用。
Create List *items

返回包含给定项的列表。

返回的列表可以分配给变量${scalar}@{list}变量。

例子:

@{list} = Create List a b c
${scalar} = Create List a b c
${ints} = Create List ${1} ${2} ${3}
Evaluate

expression,

modules=None,

namespace=None

在Python中计算给定的表达式并返回结果。

expression评估表达式中所述,在Python中进行评估

modules 参数可用于指定要导入并添加到评估命名空间的Python模块的逗号分隔列表。

namespace参数可用于将自定义评估命名空间作为字典传递。可能modules会添加到此命名空间。这是Robot Framework 2.8.4中的一项新功能。

使用的变量${variable}在评估前的表达式中被替换。变量也可以在评估命名空间中使用,并且可以使用特殊语法进行访问$variable。这是Robot Framework 2.9中的一个新功能,它在评估表达式时得到了更全面的解释。

示例(期望${result}为3.14):

${status} = Evaluate 0 < ${result} < 10 # Would also work with string '3.14'
${status} = Evaluate 0 < $result < 10 # Using variable itself, not string representation
${random} = Evaluate random.randint(0, sys.maxint) modules=random, sys
${ns} = Create Dictionary x=${4} y=${2}
${result} = Evaluate x*10 + y namespace=${ns}

=>

${status} = True
${random} = <random integer>
${result} = 42
Exit For Loop  

停止执行封闭for循环。

退出封闭的for循环并继续执行。可以直接在for循环中使用,也可以在循环使用的关键字中使用。

例:

:FOR ${var} IN @{VALUES}
  Run Keyword If '${var}' == 'EXIT' Exit For Loop
  Do Something ${var}  

请参阅Exit For Loop If 要在不使用Run Keyword If或其他包装关键字的情况下有条件地退出for循环。

Exit For Loop If condition

如果condition

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值