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

RobotFramework自动化测试框架的搭建 RF自动化测试框架ROBOTFRAMEWORK、0基础都能听懂_哔哩哔哩_bilibili(1)RobotFramework简称:RF框架(2)RF框架的特点:基于python语言开发,具有可扩展性,以关键字驱动的自动化框架(3)RF的版本:2019年7月发布的版本支持python3.7知识拓展:常用的自动化测试框架有两种驱动模式:一种是关键字驱动,另一种是数据驱动。二者的区别在于关键字驱动:将一些常用的功能封装成关键字,直接调用关键字即可实现该动作或操作; 阅读详情

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

转换参数为布尔值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} = <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

返回并在日志中记录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代码。例如<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 Regexp和Should 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语法无效,超时,或致命异常引起的错误开始不抓住这个关键字。

 



原文链接

Appium与Robot Framework集成CI:打造移动应用自动化测试流水线 自动化测试是提升软件交付效率和质量的关键实践,其核心原理是通过脚本模拟用户操作,实现重复性测试任务的自动执行。在移动应用领域,Appium作为基于WebDriver协议的跨平台框架,能够统一驱动iOS和Android应用,解决了多端测试的技术难题。结合Robot Framework这一关键字驱动的通用测试框架,可以构建出可读性强、易于维护的自动化测试资产。这种技术组合的价值在于,它能将自动化能力从本地执行扩展到持续集成(CI)流水线中,实现代码提交后自动触发测试、快速反馈质量状态。典型的应用场景包括移动应用 阅读详情

相关推荐

Robot Framework接口自动化测试实战:从环境搭建到CI/CD集成

接口自动化测试是软件质量保障的核心环节,通过模拟客户端请求与验证服务端响应,确保API功能的正确性与稳定性。其原理在于将测试用例脚本化,利用框架驱动执行并自动比对预期结果。这项技术的价值在于提升测试效率、实现快速回归,并作为持续交付流程的关键质量门禁。在Web服务、微服务架构及前后端分离的应用场景中,接口测试尤为关键。本文聚焦于Robot Framework这一关键字驱动的测试平台,它通过封装底层代码为可读的自然语言关键字,显著降低了自动化门槛。结合数据驱动测试和丰富的断言库,Robot Framework

weixin_33979203的博客 410

Python+Robot Framework+Appium:移动端自动化测试环境搭建全攻略

自动化测试是现代软件工程保障质量与效率的核心实践,其原理是通过脚本模拟用户操作,实现测试用例的自动执行与验证。在移动互联网时代,针对Android与iOS应用的自动化测试技术价值尤为突出,它能显著提升回归测试效率,并成为持续集成与交付(CI/CD)流程中不可或缺的一环。其中,基于WebDriver协议扩展的Appium,因其支持跨平台和标准化协议,成为连接测试脚本与移动设备的关键桥梁。结合关键字驱动的Robot Framework测试框架,可以构建出可读性强、易于维护的测试用例。本文聚焦于移动端自动化测试中

weixin_28829339的博客 360

Robot Framework与AppiumLibrary:构建高效移动端自动化测试框架

自动化测试是软件质量保障的核心环节,其核心原理是通过脚本模拟用户操作,对软件功能进行验证。在移动应用领域,跨平台、稳定可靠的自动化测试方案尤为关键。Appium作为基于WebDriver协议的开源工具,提供了对iOS和Android平台原生、混合及Web应用的一致驱动能力,解决了多平台测试的技术难题。Robot Framework则以其关键字驱动的设计模式和高度可扩展的生态系统,将复杂的测试逻辑封装成可读性强的自然语言脚本,显著降低了编写和维护自动化用例的门槛。两者的结合——即通过AppiumLibrary

weixin_42557803的博客 320

Python自动化测试九章经

手工测试中遇到的坑 你踩过几个? 解锁自动化测试技能 打破手工测试局限 自动化测试是测试工作的一部分,是对手工测试的一种补充。自动化测试是相对手工测试而存在的,通过所开发的软件测试工具、脚本等来实现,具有良好的可操作性、可重复使用和高效率等特点。 Python自动化测试 系统教学+实战分析 简单易上手 课程使用的是语法简洁、提供丰富的测试库和框架的Python语言,并从测试人员的角度,梳理当前最热门的自动化测试框架和常用库,并通过实战,带你快速建立自动化测试技术体系,让测试工作更高效! 3个项目实战 全程手敲代码演示 听得懂 更要会用 3大购课福利

Python3.8+RobotFramework移动端自动化测试环境配置实战指南

本文是一份详细的Python 3.8与RobotFramework移动端自动化测试环境配置实战指南。文章手把手讲解了从Java JDK、Android SDK、Node.js、Appium服务端到Python客户端及RobotFramework核心库的完整安装与配置流程,并提供了首个测试脚本示例与常见问题排错方法,旨在帮助测试工程师快速搭建稳定、可复用的自动化测试环境。

weixin_28826961的博客 366

遥感大模型核心技术之自监督预训练技术研究(2025年9月版)

本文系统探讨了自监督预训练技术在遥感大模型构建中的核心作用。随着遥感数据进入"大数据"时代,传统监督学习面临"数据丰富、标签贫乏"的瓶颈,而自监督预训练通过设计代理任务从无标签数据中学习特征表示,成为驱动大模型发展的关键引擎。文章分析了遥感领域对自监督预训练的三大独特挑战:多源异构性、地理空间约束和时空动态性,并提出了针对性解决方案:掩码自编码(MAE)技术及其演进、地理对比学习与多模态融合、位置感知预训练与多任务学习。

panshengwu的博客 842

robotFramework自动化测试框架及RIDE超详细教程,从简介到架构分层以及各种避坑指南,建议收藏!!!!!!

是一个基于Python的,可扩展的关键字驱动的测试自动化框架。它是为了端到端的验收测试(End-To-End Acceptance Test)以及验收测试驱动开发(Acceptance-Test-Driven Development, ATDD)而设计的。因此它可以应用于测试,当验证需要涉及多个不同技术和接口的分布式、异构的应用程序。特点:1.易读易写:用关键字驱动语法,测试用例易于理解和编写以及维护。2.可以通过外部文件(如Excel、CSV)或内部变量表达式来实现数据驱动。

sungeme的博客 2万+

AD7768与STM32F439的硬件设计避坑指南:如何优化高精度ADC系统的电源与PCB布局

本文详细解析了AD7768与STM32F439在高精度ADC系统硬件设计中的关键问题与优化方案。从电源系统设计、PCB布局到基准电压选型,提供了实用的避坑指南和实测数据,帮助工程师提升系统性能至110dB动态范围。特别强调了SPI信号布线和电源滤波对ADC精度的重要影响。

sugar的博客 735

SeleniumLibrary中使用js扩展库

SeleniumLibrary想通过执行js命令获取某些浏览器某些信息,可以使用 self.driver.execute_script("return window.getSessionToken()")这种格式, window.getSessionToken()为js命令。 但是SeleniumLibrary初始化后,已经封装过,貌似无法调用driver,因此通过修改SeleniumLibrary库内容完成功能,比如在SeleniumLibrary库里面找个cookie.py文件,按照上下文格式,

liu0yun的博客 278

Silvaco Atlas入门指南——从零开始掌握半导体器件仿真

本文为Silvaco Atlas半导体器件仿真软件的入门指南,详细介绍了从零开始掌握该工具的核心流程。内容涵盖Atlas的基本概念、仿真流程、核心文件(输入、结构、输出文件)、交互式与批处理两种操作模式,并逐步演示了如何从定义网格、划分区域、设置电极到进行掺杂、选择物理模型并求解,最终获取和分析器件特性的完整步骤。旨在帮助微电子相关专业人员和工程师快速上手这一强大的“数字实验室”,提升半导体器件设计与研发效率。

weixin_29306317的博客 401

carsim与simulink联合仿真学习笔记(二)——使用C-class车模做driver model仿真(5 driver sensors)

Driver model 在carsim的Simulink库中自带外部驾驶员模型,打开后如图所示: 然后打开carsim中对应的数据集,如图所示: 具体仿真步骤不在赘述,注意到这里选择的是E-Class车模,那么如果我想选择C-Class车型进行仿真呢?点三角选择车型可以看到: 马赛克部分是我后来建的,如过没有使用过是没有马赛克部分的。那么既然这里没有C-class,又该怎么办呢? 创建C-...

xufuqiang2017的博客 4117

python自动测试g_python 自动化测试平台 Robot Framework快速入门 [原创翻译]

Pybot有很多命令选项可以用来控制执行测试和产生输出,可以通过–help来查看。例如,以下命令更改日志文件的名称和顶层测试套件的名称:pybot --log mylog.html --nameMy_Fine_Tests quickstart.html1.1实例程序介绍本指南中的示例应用程序是一个经典的登录例子的变种:它是一个Python书写的基于命令行的认证服务器。目前,示例应用程序允许用户做三...

weixin_39786141的博客 161

基于Simulink环境,提供一个关于如何对DC-DC变换器进行效率分析的仿真建模

效率定义:变换器效率通常定义为输出功率与输入功率之比,即 η=PoutPinη=Pin​Pout​​。重要性:高效率意味着更少的能量损失和更好的热管理,对于便携式设备、电动汽车等应用至关重要。挑战开关损耗:高频操作带来的开关器件损耗。导通损耗:电流流过电阻性元件(如MOSFET导通电阻)造成的能量损失。控制策略:优化控制算法以减少损耗。首先明确要模拟的任务内容。设计一个能够支持特定输入输出电压比的DC-DC变换器。根据工作频率和谐振元件值确定合适的电路参数。

xiaoheshang_123的博客 156

Selenium与Robot Framework深度对比:自动化测试框架选型与实战指南

自动化测试是现代软件工程中保障产品质量的关键环节,其核心原理是通过脚本模拟用户操作,实现测试流程的自动执行与验证。在Web UI自动化领域,Selenium和Robot Framework是两大主流技术方案,它们分别代表了不同的设计哲学与技术价值。Selenium作为底层浏览器操控工具集,提供了标准化的WebDriver API,支持多种编程语言,赋予开发者极高的灵活性与控制力,适合需要深度定制和复杂集成的场景。Robot Framework则采用关键字驱动模式,通过表格化语法和丰富的内置库,降低了自动化门

weixin_34216196的博客 384

【车载以太网测试从入门到精通】系列文章目录汇总

物理层测试、数据链路层测试、以太网交换机测试、网络层测试、传输层测试、以太网TCP/IP协议自动化测试、以太网网络管理测试、以太网网络管理自动化测试、鲁棒性测试、SOME/IP测试、SOMEI/IP服务接口自动化测试、DoIP诊断测试、DoIP诊断自动化测试、DoIP BootLoader刷写、以太网网关路由测试、以太网网关路由自动化测试、AVB测试。

测试领域技术分享 3162

深入解析:武汉光庭信息技术 Android CarPlay 开发岗位的技术要求与面试准备(大连)

武汉光庭信息大连分部招聘Android CarPlay开发工程师,要求专科以上学历及2年以上Android开发经验,需精通CarPlay集成技术与车载系统开发。该职位涉及Android底层框架修改、CarPlay协议实现及车规级系统开发,需处理USB/HID驱动、图形合成等技术难点,并确保通过Apple严格认证。求职者需具备扎实的Android开发能力,熟悉车载环境特殊性,包括系统稳定性保障、人机交互适配等技术要点。文章深度解析了职位技术内涵,并提供面试问题与参考答案,帮助求职者全面准备这一复合型技术岗位。

郑伟强dev的专栏 400

Robot Framework(1)- 入门介绍

如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html RF 的介绍 Robot Framework是基于 Python 的可扩展关键字驱动的自动化框架,用于验收测试 验收测试驱动开发(ATDD),行为驱动开发(BDD)和机器人流程自动化(RPA) 它可用...

qq_33801641的博客 927

MATLAB与ROS联合仿真——实例程序搭建思路

MATLAB与ROS联合仿真——实例程序搭建思路

慕羽★的博客 5229

PyTest vs Robot Framework vs Cucumber:哪个自动化测试框架更容易上手?

在软件测试中,自动化测试框架的选型始终是团队面临的核心问题。不同框架的设计哲学差异显著:PyTest基于Python原生断言与fixture机制,追求灵活简洁;Robot Framework采用关键字驱动与表格化用例,降低非技术人员参与门槛;Cucumber借助Gherkin语言实现行为驱动开发(BDD),强调业务与研发协作。理解这些原理有助于根据团队技术栈、自动化类型和维护成本做出合理选择。从接口自动化到Web UI测试,从快速回归到业务场景验证,合理应用这些框架能显著提升测试效率与可维护性。本文从易上手

weixin_31822733的博客 202

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Robot Framework 官方公共 API(robot.api)完全指南:从日志、装饰器到解析与执行

`robot.api` 是 Robot Framework 对外暴露稳定公共 API 的官方包,是测试库开发者、工具链构建者与自动化平台集成方绕不开的入口。本指南以仓库中的 API 文档定义([doc/api/autodoc/robot.api.rst](https://link.gitcode.com/i/0877c6a2c96cd30e99101a2fc53c849e))为主体骨架,结合 [s

gitblog_00309的博客 479

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Robot Framework 快速入门

本文转自:http://blog.youkuaiyun.com/ren911/article/details/5576310 ren911的博客Robot Framework 快速入门 Robot Framework 快速入门 Copyright © Nokia Siemens Networks 2008 Licensed under the Apache License, Version 2.0 翻译

Boiler UP! 1252

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Python3.6+RobotFramework移动端自动化测试环境搭建全攻略

本文详细介绍了如何使用Python3.6与RobotFramework搭建移动端自动化测试环境。内容涵盖从JDK、安卓SDK、Node.js、Appium服务端的基础安装与配置,到Python环境、RobotFramework核心库及其Appium扩展库的安装,并提供了IDE选择建议、真机/模拟器连接实战以及常见问题排查方法,旨在帮助测试人员一次性成功搭建稳定可用的自动化测试框架。

www00的博客 168

【转】Robot Framework 快速入门[转]

本文转自:http://blog.youkuaiyun.com/ren911/article/details/5576310 ren911的博客 Robot Framework 快速入门 Robot Framework 快速入门 Copyright © Nokia Siemens Networks 2008 Licensed under the Apache License, Version 2.

上帝De助手 4383

python中的声音处理文件库_python 文件库

Python如何搜索模块在引入模块时,把库文件和应用文件放在同一文件夹下,当在该文件夹下运行程序时,Python会自动在当前文件夹下搜索它想要引入的模块。但Python还会到其它地方寻找库:(1)标准库的安装路径;(2)操作系统环境变量PYTHONPATH所包含的路径。标准库由Python官方提供,Pyt...文章止于至玄2017-03-12904浏览量Python 教程 准备工作一、Python...

weixin_39821604的博客 399

RobotFramework Web自动化测试环境搭建:Python+Browser Library实战指南

Web自动化测试是软件质量保障的核心环节,通过模拟用户操作对Web应用进行功能验证。其原理基于浏览器驱动协议,通过脚本控制浏览器行为,实现测试的自动化和可重复性。这项技术的核心价值在于提升测试效率、保障回归测试质量,并支持持续集成。在电商、金融、企业级应用等场景中,自动化测试能有效应对频繁的版本迭代。本文聚焦于RobotFramework这一关键字驱动框架,它以其易用性和可扩展性著称,尤其与基于Playwright的Browser Library结合,能自动管理浏览器驱动,显著提升脚本稳定性和执行效率。通过

weixin_28832121的博客 264
上一篇: 解析中间人攻击之四——SSL欺骗
下一篇: python_getopt解析命令行输入参数的使用
whackw
博客等级 码龄16年 203粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值