python 自动化测试平台 Robot Framework 内置库

python 自动化测试平台 Robot Framework 内置库 翻译


1.1 概述

#2012-02-16 磁针石

#承接软件自动化实施与培训 验证码破解 软件破解 脚本开发 测试和python培训等

#gtalk ouyangchongwu#gmail.com qq 37391319 博客:testing.blog.chinaunix.net

#版权所有,转载刊登请来函联系

#自动化测试和python群组: http://groups.google.com/group/automation_testing_python

#python qq group: 深圳自动化测试python群:113938272

#武冈深圳qq群:66250781 都梁深圳湖南户外群:49494279

#参考资料:

           Normal   0            7.8 pt   0   2      false   false   false      EN-US   ZH-CN   X-NONE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         /* Style Definitions */  table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0 7px 0 7px; mso-para-margin:0; mso-para-margin-bottom:0; mso-pagination:widow-orphan; font-size:14px; mso-bidi-font-size:15px; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1px;} BuiltIn

版本:2.6.3

范围:global

命名参数:支持

介绍

BuiltInRobot Framework标准库,提供了常用关键字。它自动导入,从而始终可用。 提供的关键字有用于验证的(e.g. Should Be Equal, Should Contain),转换的(e.g. Convert To Integer),其他(e.g. Log, Sleep, Run Keyword If, Set Global Variable)

所有关键字如下:

Call Method  ·  Catenate  ·  Comment  ·  Convert To Binary  ·  Convert To Boolean  ·  Convert To Hex  ·  Convert To Integer  ·  Convert To Number  ·  Convert To Octal  ·  Convert To String  ·  Create List  ·  Evaluate  ·  Exit For Loop  ·  Fail  ·  Fatal Error  ·  Get Count  ·  Get Length  ·  Get Library Instance  ·  Get Time  ·  Get Variable Value  ·  Get Variables  ·  Import Library  ·  Import Resource  ·  Import Variables  ·  Keyword Should Exist  ·  Length Should Be  ·  Log  ·  Log Many  ·  Log Variables  ·  No Operation  ·  Regexp Escape  ·  Remove Tags  ·  Repeat Keyword  ·  Replace Variables  ·  Run Keyword  ·  Run Keyword And Continue On Failure  ·  Run Keyword And Expect Error  ·  Run Keyword And Ignore Error  ·  Run Keyword If  ·  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  ·  Run Keyword Unless  ·  Run Keywords  ·  Set Global Variable  ·  Set Library Search Order  ·  Set Log Level  ·  Set Suite Variable  ·  Set Tags  ·  Set Test Message  ·  Set Test Variable  ·  Set Variable  ·  Set Variable If  ·  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  ·  Should Contain X Times  ·  Should End With  ·  Should Match  ·  Should Match Regexp  ·  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 Start With  ·  Sleep  ·  Variable Should Exist  ·  Variable Should Not Exist  ·  Wait Until Keyword Succeeds

关键字介绍

关键字

参数

文档

Call Method

object, method_name, *args

使用参数args调用对象object的方法method_name

方法可能返回值可以赋值给一个变量。  

当找不到方法或者方法产生异常时,Keyword会失败。

 

例子:

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



Catenate

Catenate

连接给定参数,返回字符串。

默认用空格连接参数项目,如果第一个参数为'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

在日志文件中以关键字参数形式显示指定信息。  

Comment对参数不进行任何处理,仅仅是显示在日志中,用于显示简单信息。

如果要显示变量值,可以使用Log   Log Many关键字。

Convert To Binary

item, base=None, prefix=None, length=None

转换参数为二进制字符串。

如果添加了base参数,则先内部使用Convert   To Integer转换为整数,然后再转换为二进制数字,以字符串的形式显示,比如”1011“

返回值可以包含可选的前缀和最小长度(不包含前缀和负号等)。如果返回值比要求的长度短,则使用0填充。

 

例子:

${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

Convert To Boolean

item

转换参数为布尔值truefalse

如果参数是字符串'True'(不区分大小写)就返回真,为'False'就返回假;其他情况调用Python'bool'的方法来判断。请参阅http://docs.python.org/lib/truth.html  

Convert To Hex

item, base=None, prefix=None, length=None, lowercase=False

转换参数为十六进制字符串。

如果添加了base参数,则先内部使用Convert To   Integer转换为整数,然后再转换为十六进制数字,以字符串的形式显示,比如'FF0A'

返回值可以包含可选的前缀和最小长度(不包含前缀和负号等)。如果返回值比要求的长度短,则使用0填充。

默认返回大写字符串,lowercase参数会转换值为小写(不包含前缀)。

 

例子:  

${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

Convert To Integer

item, base=None

转换参数为整数。

如果参数是字符串,则默认转为十进制整数。使用其他进制可以用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

 

Convert To Number

item, precision=None

转换参数为浮点数。

如果可选参数precision是正数或零,返回的四舍五入的值。负数则相当于修改-precision位数为0

如果可选参数precision是负数,返回的四舍五入的值。

 

例子:

${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

注意机器一般不能准确地存储浮点数。参见http://docs.python.org/tutorial/floatingpoint.html

Convert To Octal

item, base=None, prefix=None, length=None

转换参数为八进制字符串。

如果添加了base参数,则先内部使用Convert To   Integer转换为整数,然后再转换为八进制数字,以字符串的形式显示,比如'775''

返回值可以包含可选的前缀和最小长度(不包含前缀和负号等)。如果返回值比要求的长度短,则使用0填充。

默认返回大写字符串,lowercase参数会转换值为小写(不包含前缀)。

 

例子:  

${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

 

Convert To String

item

转换参数为Unicode字符串。

针对Python对象使用“__unicode__''__str__’方法。

Create List

*items *项目

根据指定参数创建列表。  

返回的列表都用来给$ {标量}@{列表}变量赋值。

 

例子:

@{list} =

Create List

a

b

c

${scalar} =

Create List

a

b

c

${ints} =

Create List

${1}

${2}

${3}

Evaluate

expression, modules=None

Python计算表达式并返回结果。

modules参数可用于导入一些逗号分隔模块列表到表达式计算的名字空间。

 

的进口和计算表达式的命名空间添加到Python模块列表。

modules argument can be used to specify a comma separated list of   Python modules to be imported and added to the namespace of the evaluated   expression .评估在Python表达式,并返回结果。   模块参数可用于指定一个逗号分隔的进口和计算表达式的命名空间添加到Python模块列表。

 

例子 (假定 ${result} 3.14):

:

${status} =

Evaluate

0 < ${result} < 10


${down} =

Evaluate

int(${result})


${up} =

Evaluate

math.ceil(${result})

math

${random} =

Evaluate

random.randint(0, sys.maxint)

random,sys

=>

- ${status} = True

- ${down} = 3

- ${up} = 4.0

- ${random} = <random integer>

 

注意:如果表达式很复杂,建议在测试库中实现逻辑。

Exit For Loop


立即停止执行for循环。  

例子:

:FOR

${var}

IN

@{SOME LIST}


Run Keyword If

'${var}' == 'EXIT'

Exit For Loop


Do Something

${var}


Fail

msg=None

停止执行当前测试用例,

Fatal Error

msg=None

停止执行整个测试。   后续用例不会执行,可能的teardown也不会执行。

Get Count

item1, item2

返回并在日志中记录item2Item1中出现的次数。

此关键字适用于Python字符串和列表和所有具有'count'方法和以及可转换为Python列表的对象。

 

例子:

${count} =

Get Count

${some item}

interesting value

Should Be True

5 < ${count} < 10



Get Length

item

返回并在日志中记录item的长度。

item可以是任何有一个长度的对象,例如,字符串,列表,或映射。

关键字首先试图用Python函数len函数(内部调用item__len__方法)得到的长度。如果失败,关键字尝试直接调用item's的可能的lengthsize的方法。最后试图获得该项目的length属性值。如果所有这些尝试不成功的,关键字Fail  

可以使用列表,但是要作为标量来使用,比如(e.g. ${LIST})

Get Library Instance

name

返回指定测试库的当前活动实例。

该关键字可以是测试库和其他有状态的测试库进行交互。比如:

from robot.libraries.BuiltIn import BuiltIn

 

def title_should_start_with(expected):

    seleniumlib =   BuiltIn().get_library_instance('SeleniumLibrary')

    title =   seleniumlib.get_title()

    if not   title.startswith(expected):

        raise   AssertionError("Title '%s' did not start with '%s'"

                             % (title, expected))

 

它也可以使用这个关键字,在测试数据,并返回库实例传递   到另一个关键字。   If a library is imported with a custom name, the name used   to get the instance must be that name and not the original library name.如果一个库导入一个自定义名称,   名称中使用的实例必须是这个名字,而不是原来的库名称。

Get Time

format=timestamp, time=NOW

根据指定格式获取时间。

不区分大小写。

  1.          如果格式中包含epoch,返回的是(Jan 1, 1970 0:00:00)开始的秒数。

  2.          如果格式包含任何'year',   'month', 'day', 'hour', 'min', or 'sec',则返回对应部分。

  3.          默认格式'2006-02-24   15:08:31'

默认返回当前时间。

  1.          如果是浮点数,解释为自epoch以来的秒数

  2.          有效的时间戳,比如:'YYYY-MM-DD   hh:mm:ss' and 'YYYYMMDD hhmmss'

  3.          'NOW',不区分大小写,为当前时间

  4.          'NOW - 1 day' 'NOW + 1 hour 30 min' 等则会计算时间

例子:假定当前时间是2006-03-29 15:06:21

${time} =

Get Time




${secs} =

Get Time

epoch



${year} =

Get Time

return year



${yyyy}

${mm}

${dd} =

Get Time

year,month,day

@{time} =

Get Time

year month day hour min sec



${y}

${s} =

Get Time

seconds and year


=>

- ${time} = '2006-03-29 15:06:21'

- ${secs} = 1143637581

- ${year} = '2006'

- ${yyyy} = '2006', ${mm} = '03', ${dd} = '29'

- @{time} = ['2006', '03', '29', '15', '06', '21']

- ${y} = '2006' - ${s} = '21'

 

 

${time} =

Get Time


1177654467


${secs} =

Get Time

sec

2007-04-27 09:14:27


${year} =

Get Time

year

NOW

# The time of execution

${day} =

Get Time

day

NOW - 1d

# 1 day subtraced from NOW

@{time} =

Get Time

hour min sec

NOW + 1h 2min 3s

# 1h 2min 3s added to NOW

=>

=>

- ${time} = '2007-04-27 09:14:27'

- ${secs} = 27

- ${year} = '2006'

- ${day} = '28'

 - @{time} = ['16', '08',   '24']

Get Variable Value

name, default=None

返回变量值,如果变量不存在就返回default

变量名可以是常规的变量名比如(eg ${NAME} )或者转义格式\${NAME}。注意,前者有一定的局限性, Set Suite   Variable关键字中的解释。

例子:

${x} =

Get Variable Value

${a}

default

${y} =

Get Variable Value

${a}

${b}

${z} =

Get Variable Value

${z}


 

Get Variables


返回包含在当前范围内的所有变量的字典。

Import Library

name, *args

test suite导入库。

可以在测试执行时动态导入库。支持库名和绝对路径导入。使用'WITH NAME'还可以更改库名。

例子:

Import Library

MyLibrary




Import Library

${CURDIR}/Library.py

some

args


Import Library

${CURDIR}/../libs/Lib.java

arg

WITH NAME

JavaLib

Import Resource

path

test suite导入资源文件。

path必须是绝对路径。斜线作为路径分隔符(包含Windows)。

 

例子:

Import Resource

${CURDIR}/resource.txt

Import Resource

${CURDIR}/../resources/resource.html

Import Variables

path, *args

test suite导入变量文件。

path必须是绝对路径。斜线作为路径分隔符(包含Windows)。

 

例子:

Import Variables

${CURDIR}/variables.py



Import Variables

${CURDIR}/../vars/env.py

arg1

arg2

Keyword Should Exist

name, msg=None

Fail除非关键字在当前作用域存在。

有多个同名的关键字存在也会Fail

Length Should Be

item, length, msg=None

验证item的长度。

通过关键字Get Length获取item的长度。

Log

message, level=INFO

在指定日志级别下记录message

有效的日志级别有TRACE, DEBUG, INFO (default), HTML and WARNHTML可以写不转义的HTML代码。例如<img src="image.png">HTML日志级别将创建一个图像,但其他级别仅仅是显示字符串。注意,无效的HTML会破坏整个日志文件,一定要谨慎使用。HTML消息实际上是使用了INFO级别。

WARN级别记录的消息将在控制台和日志中测试执行的错误部分都可以看到。

Log Many

*messages

INFO级别下记录messages为独立的条目。

Log Variables

level=INFO

在日志中记录当前所有变量。

No Operation


无操作,不做任何事情。

Regexp Escape

*patterns

对字符串中的非字母数字进行转义。

这个关键字可以用来转义关键字Should   Match RegexpShould Not   Match Regexp使用的字符串。

转义使用python中的re.escape()函数。

 

例子:

${escaped} =

Regexp Escape

${original}

@{strings} =

Regexp Escape

@{strings}

Remove Tags

*tags

从当前测试用例或suite中删除标签

Tag可以使用模式,'*'匹配所有字符,单个字符。

例子:

Remove Tags

mytag

something-*

?ython

Repeat Keyword

times, name, *args

执行指定的关键字times次。

Times为整数或可以转换为整数的字符串。为了提高可读性,还可以在'times'后添加后缀'times' or 'x'(不区分大小写,去掉多余空格)。

例子:

Repeat Keyword

5 times

Goto Previous Page



Repeat Keyword

${var}

Some Keyword

arg1

arg2

Replace Variables

text

替换text中的变量。

如果文本中没有包含变量,关键字Fail

例子:假定文件“template.txt”的内容为“Hello $ {NAME},变量的'${NAME}'的值为'Robot'

${template} =

Get File

${CURDIR}/template.txt

${message} =

Replace Variables

${template}

Should Be Equal

${message}

Hello Robot!

如果text只有一个变量,返回值为原来的对象。否则返回字符串。

Run Keyword

name, *args

根据参数args执行关键字name

name可以动态设定,例如,来自另一个关键字的返回值或命令行。

Run Keyword   And Continue On Failure

name, *args

根据参数args执行关键字name,错误时依旧继续执行。

 

例如:

Run Keyword And Continue On Failure

Fail

This is a stupid example

Log

This keyword is executed


 

Run Keyword And   Expect Error

expected_error, name, *args

根据参数args执行关键字name,预期捕获到错误:expected_error

预期的错误必须和Robot Framework报告中的相同。它可以是一个模式,'*'匹配所有字符,匹配单个字符。捕获到预期错误,返回错误消息,否则关键字Fail

 

例子:

Run Keyword And Expect Error

My error

Some Keyword

arg1

arg2

${msg} =

Run Keyword And Expect Error

*

My KW


Should Start With

${msg}

Once upon a time in



Run Keyword And   Ignore Error

name, *args

根据参数args执行关键字,并忽略错误。

此关键字返回两个值,第一个是是“PASS”'FAIL',第二个值是返回值或者或收到的错误消息。

Run Keyword If

condition, name, *args

如果condition为真,根据参数args执行关键字。

例子:a simple if/else construct:

${status}

${value} =

Run Keyword And Ignore Error

My Keyword

Run Keyword If

'${status}' == 'PASS'

Some Action


Run Keyword Unless

'${status}' == 'PASS'

Another Action


Run   Keyword If All Critical Tests Passed

name, *args

如果所有Critical测试用例通过,则根据参数args执行关键字。

只能用于suite teardown

Run Keyword If   All Tests Passed

name, *args

如果所有测试用例通过,则根据参数args执行关键字。

只能用于suite teardown

Run   Keyword If Any Critical Tests Failed

name, *args

如果有Critical测试用例Fail,则根据参数args执行关键字。

只能用于suite teardown

Run Keyword If   Any Tests Failed

name, *args

如果有测试用例Fail,则根据参数args执行关键字。

只能用于suite teardown

Run Keyword If Test   Failed

name, *args

如果测试用例Fail,则根据参数args执行关键字。

只能用于test teardown

Run Keyword If Test   Passed

name, *args

如果测试用例Pass,则根据参数args执行关键字。

只能用于test teardown

Run Keyword If   Timeout Occurred

name, *args

如果测试用例超时,则根据参数args执行关键字。

只能用于test teardown

Run Keyword Unless

condition, name, *args

如果condition为假,根据参数args执行关键字。

Run Keywords

*names

无参数地执行所有关键字。

主要用于setups teardowns中,不想创建更高级别的关键字但是有很多很多动作要进行。

 

例子:

Setting

Value

Value

Value

Suite Setup

Run Keywords

Initialize database

Start servers

Set Global Variable

name, *values

设置全局变量。

和命令行使用'--variable' or '--variablefile'创建的效果一样。

Set Library Search Order  

*libraries

设置库查找顺序。

使用关键字的时候可以不使用库名,比如Keyword MyLibrary.Keyword效果一样,清晰起见,还是建议带上库名。

注:文件中的关键字比库中的有更高的优先级。所有名字不区分大小写,会忽略多余的空格。

Set Log Level

level

设置log级别并返回就的log级别。

默认级别是INFO.可用的log级别有:TRACE, DEBUG, INFO (default), WARN and NONE (no logging),对应的信息由多到少。

Set Suite Variable

name, *values

设置suite变量。

效果和使用变量表或者从变量文件中导入一致。其他的suite,包含子suite将看不到这个变量。变量名可以是

常规的变量名比如(eg ${NAME} )或者转义格式\${NAME} $NAME

 

例子:

Set Suite Variable

${GREET}

Hello, world!

${ID} =

Get ID


Set Suite Variable

${ID}


注意如果变量的值中包含变量,必须使用转义的方式设置变量

例子:

${NAME} =

Set Variable

\${var}


Set Suite Variable

${NAME}

value

# Sets variable ${var}

Set Suite Variable

\${NAME}

value

# Sets variable ${NAME}

Set Tags

*tags

在测试用例或者suite中设置标签。

Teardown中不能使用该关键字。

Set Test Message

message

为当前测试用例设置消息。

message可能被错误消息覆盖,除非在测试用例teardown中使用。在测试用例teardown中,message甚至会覆盖错误消息。

本关键字不能在suite setup suite teardown中使用。

Set Test Variable

name, *values

设置当前测试用例变量。

Set Variable

*values

设置变量。

这个关键字主要用于设置标量变量。此外,它可用于转换包含列表的标量变量为列表变量或者多重标量变量,列表中的变量或多个标量变量。创建新列表时建议使用‘Create List'

例子:

 

${hi} =

Set Variable

Hello, world!



${hi2} =

Set Variable

I said: ${hi}



${var1}

${var2} =

Set Variable

Hello

world

@{list} =

Set Variable

${list with some items}



${item1}

${item2} =

Set Variable

${list with 2 items}


本关键字创建的变量仅仅在当前范围有效。

Set Variable If

condition, *values

基于condition设置变量。

基本的用法是一个condition2value。使用Should   Be True来计算condition如果condition为真,则返回第一个值,否则返回第二个值。第二个值也可以省略,会采用默认值None

 

例子:假设${rc}0

${var1} =

Set Variable If

${rc} == 0

zero

nonzero

${var2} =

Set Variable If

${rc} > 0

value1

value2

${var3} =

Set Variable If

${rc} > 0

whatever


=>

- ${var1} = 'zero'

- ${var2} = 'value2'

- ${var3} = None

 

多个Set Variable If关键字可以嵌套,效果类似于'Else   If'

例子

${var} =

Set Variable If

${rc} == 0

zero

... ...

${rc} > 0

greater than zero

less then zero





${var} =

Set Variable If



... ...

${rc} == 0

zero


... ...

${rc} == 1

one


... ...

${rc} == 2

two


... ...

${rc} > 2

greater than two


... ...

${rc} < 0

less than zero


Should Be Empty

item, msg=None

验证给定的项目为空。

Item的长度通过Get Length关键字获取。

Should Be Equal

first, second, msg=None, values=True

Fail除非对象相等。

Should Be Equal As   Integers

first, second, msg=None, values=True, base=None

Fail除非转换为整数后相等。

例子:

Should Be Equal As Integers

42 42

${42}

Error message

Should Be Equal As Integers

ABCD

abcd ABCD

base=16

Should Be Equal As Integers

0b1011

11 11


Should Be Equal As   Numbers

first, second, msg=None, values=True, precision=6

Fail除非转换为实数后相等。

采用Convert To   Number关键字使用指定的精度进行转换。

 

例子:

Should Be Equal As Numbers

${x}

1.1 1.1


# Passes if ${x} is 1.1

Should Be Equal As Numbers

1.123

1.1 1.1

precision=1

# Passes

Should Be Equal As Numbers

1.123

1.4 1.4

precision=0

# Passes

Should Be Equal As Numbers

112.3

75 75

precision=-2

# Passes

参考:http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm  

Should Be Equal As   Strings

first, second, msg=None, values=True

Fail除非转换为字符串后相等。

Should Be True

condition, msg=None

Fail除非conditiontrue

如果condition是一个字符串(如$ {RC}<10')使用Python的内置函数'eval'来处理表达式。其他情况参考:

http://docs.python.org/lib/truth.html

 

例子:

Should Be True

${rc} < 10


Should Be True

'${status}' == 'PASS'

# Strings must be quoted

Should Be True

${number}

# Passes if ${number} is not zero

Should Be True

${list}

# Passes if ${list} is not empty

Should Contain

item1, item2, msg=None, values=True

Fail除非item1中包含item2

支持Pythonin操作的字符串,列表等。

 

例子:

Should Contain

${output}

PASS

Should Contain

${some_list}

value

Should Contain X Times

item1, item2, count, msg=None

Fail除非item1中包含item2 count次。

支持字符串、列表等支持Get Count关键字的对象。

支持字符串、列表等支持Get Count关键字的对象。Msg会覆盖默认的错误消息。实际次数会记录在日志中。

列表和获取计数的所有对象的作品。默认的错误消息可以用味精覆盖和实际计数始终记录。

例子:

Should Contain X Times

${output}

hello

2

Should Contain X Times

${some list}

value

3

Should End With

str1, str2, msg=None, values=True

Fail除非字符串str1以字符串str2结尾。

Should Match

string, pattern, msg=None, values=True

Fail除非string匹配模式pattern

模式匹配是和shell中的文件匹配类似,它区分大小写,'*'匹配所有字符,单个字符。

Should Match Regexp

string, pattern, msg=None, values=True

Fail如果string不匹配正则表达式pattern

使用pythonre模块进行正则表达式匹配,详细信息如下:

* http://docs.python.org/lib/module-re.html

* http://www.amk.ca/python/howto/regex/

 

Robot Framework中的regexp需要注意:

1)反斜杠在测试数据是转义字符,因此模式中要使用双重转义(如:'\\d\\w+')模式可能反斜杠转义。

2)字符串需要转义的特殊字符,可以使用regexp ESCAPE关键字。

3pattern不会匹配整个字符串。例如,模式'ello'会匹配字符串'hello world!如果要完整匹配,'^''$'字符可以用来表示字符串的开头和结尾

4)影响表达式解析的标志(eg re.IGNORECASE, re.MULTILINE)可通过前缀'(?iLmsux)'的形式设置(eg '(?im)pattern')。可用的标志有'IGNORECASE':   'i', 'MULTILINE': 'm', 'DOTALL': 's', 'VERBOSE': 'x', 'UNICODE': 'u', and   'LOCALE': 'L'.

如何表达分析可能改变标志(如re.IGNORECASEre.MULTILINE)可以设置前缀模式(?iLmsux)组(如IM)模式)。

如果关键字成功,它返回字符串匹配的模式的一部分。另外还可以返回组。

 

例子:

Should Match Regexp

${output}

\\d{6}

# Output contains six numbers

Should Match Regexp

${output}

^\\d{6}$

# Six numbers and nothing more

${ret} =

Should Match Regexp

Foo: 42

(?i)foo: \\d+

${match}

${group1}

${group2} =


...

Should Match Regexp

Bar: 43

(Foo|Bar): (\\d+)

=>

- ${ret} = 'Foo: 42'

- ${match} = 'Bar: 43'

- ${group1} = 'Bar'

- ${group2} = '43'

Should Not Be Empty

item, msg=None

验证给定的项目非空。

使用Get Length来获取item的长度。Msg会覆盖默认的错误消息。

Should Not Be Equal

first, second, msg=None, values=True

Fail如果对象相等。

Should Not Be   Equal As Integers

first, second, msg=None, values=True, base=None

Fail如果转换为整数后相等。

Should Not Be   Equal As Numbers

first, second, msg=None, values=True, precision=6

Fail如果转换为实数后相等。

采用Convert To   Number关键字使用指定的精度进行转换。

Should Not Be   Equal As Strings

first, second, msg=None, values=True

Fail如果转换为字符串后相等。

Should Not Be True

condition, msg=None

Fail如果conditiontrue

Should Not Contain

item1, item2, msg=None, values=True

Fail如果item1中包含item2

支持Pythonin操作的字符串,列表等。

 

例子:

Should Not Contain

${output}

FAILED

Should Not Contain

${some_list}

value

Should Not End With

str1, str2, msg=None, values=True

Fail如果字符串str1以字符串str2结尾。

Should Not Match

string, pattern, msg=None, values=True

Fail如果string匹配模式pattern

模式匹配是和shell中的文件匹配类似,它区分大小写,'*'匹配所有字符,单个字符。

Should Not Match Regexp

string, pattern, msg=None, values=True

Fail如果string匹配正则表达式pattern

Should Not Start With

str1, str2, msg=None, values=True

Fail如果字符串str1以字符串str2开头。

Should Start With

str1, str2, msg=None, values=True

Fail如果字符串str1不以字符串str2开头。

Sleep

time, reason=None

暂停指定时间

时间可以是一个数字或时间字符串。时间字符串格式如'1 day 2 hours 3 minutes 4 seconds 5milliseconds' '1d 2h 3m 4s 5ms'等。参数reason用来解析reason为什么要sleepsleep的时间和原因都记录在日志中。

 

例子:

Sleep

42


Sleep

1.5


Sleep

2 minutes 10 seconds


Sleep

10s

Wait for a reply

Variable Should Exist

name, msg=None

Fail如果给定的变量在当前范围内的不存在。

变量名可以是一个正常的变量名(如$ {NAME})或转义格式(例如:\ $   {NAME})。注意,前者有一定的局限性, Set   Suite Variable关键字中的解释。

Msg会覆盖默认的错误消息。

Variable Should Not   Exist

name, msg=None

Fail如果给定的变量在当前范围内的存在。

变量名可以是一个正常的变量名(如$ {NAME})或转义格式(例如:\ $   {NAME})。注意,前者有一定的局限性, Set   Suite Variable关键字中的解释。

Msg会覆盖默认的错误消息。

Wait Until Keyword   Succeeds

timeout, retry_interval, name, *args

等到指定的关键字成功或超时。

name args指定了要执行的关键字,类似于Run关键字。如果关键字在超时之前就失败,关键字就Failretry_interval是重试间隔:表示上次执行失败要等多久才执行下次。

Timeoutretry_interval必须使用Robot Framework的时间格式(e.g. '1 minute', '2 min 3 s', '4.5').

例子:

Wait Until Keyword Succeeds

2 min

5 sec

My keyword

arg1

arg2

 

Starting from Robot Framework 2.5 errors caused by invalid syntax,   timeouts, or fatal exceptions are not caught by this keyword.机器人框架2.5语法无效,超时,或致命异常引起的错误开始不抓住这个关键字。


你可能感兴趣的:(python 自动化测试平台 Robot Framework 内置库)