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:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.5pt; mso-bidi-font-size:11.0pt; 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:1.0pt;} BuiltIn

版本:2.6.3

范圍:global

命名參數:支持

介紹

BuiltIn是Robot Framework標准庫,提供了常用關鍵字。它自動導入,從而始終可用。 提供的關鍵字有用於驗證的(e.g. Should Be EqualShould Contain),轉換的(e.g. Convert To Integer),其他(e.g. LogSleepRun Keyword IfSet 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

轉換參數為布爾值true或false。

如果參數是字符串'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} =

 

注意:如果表達式很復雜,建議在測試庫中實現邏輯。

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

返回並在日志中記錄item2在Item1中出現的次數。

此關鍵字適用於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的可能的length和size的方法。最后試圖獲得該項目的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 WARN。HTML可以寫不轉義的HTML代碼。例如在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設置變量。

基本的用法是一個condition和2個value。使用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除非condition為true。

如果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。

支持Python有in操作的字符串,列表等。

 

例子:

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。

使用python的re模塊進行正則表達式匹配,詳細信息如下:

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

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

 

Robot Framework中的regexp需要注意:

1)反斜杠在測試數據是轉義字符,因此模式中要使用雙重轉義(如:'\\d\\w+')模式可能反斜杠轉義。

2)字符串需要轉義的特殊字符,可以使用regexp ESCAPE關鍵字。

3)pattern不會匹配整個字符串。例如,模式'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.IGNORECASE,re.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如果condition為true。

Should Not Contain

item1, item2, msg=None, values=True

Fail如果item1中包含item2。

支持Python有in操作的字符串,列表等。

 

例子:

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為什么要sleep,sleep的時間和原因都記錄在日志中。

 

例子:

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關鍵字。如果關鍵字在超時之前就失敗,關鍵字就Fail。retry_interval是重試間隔:表示上次執行失敗要等多久才執行下次。

Timeout和retry_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語法無效,超時,或致命異常引起的錯誤開始不抓住這個關鍵字。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM