robotframework 入门笔记 (二) Builtin 库的关键字

ride建测试用例

Robot Framework 与unittest(python)一致的地方

Robot Framework unittest(Python)
Test Project 同左
Test Suit 同左
Test Cas

同左

ride建测试用例步骤:

  1. ride创建project(一般创建成目录): 选择菜单栏 file----->new Proje,输入project名称;Type 选择 Director。
  2. ride创建suit(一般创建成xt文件): project右键, 选择 new Suite 选项, 输入suit名称;Type 选择 File; format选择txt (format 全部选项robot,txt,tsv,html)
  3. ride创建测试用例:suit右键,选择new testcase, 输入testcase名称就OK了。 就可以在 test case 的“表格”来进行测试用例的编写了

Builtin 库提供的常用关键字

完整的关键字,可以查看官方文档:http://robotframework.org/robotframework/latest/libraries/BuiltIn.html

1. “Set variable”关键字来定义变量

2. log 关键字就是编程语言里的“print”一样,可以打印任何你想打印的内容

log关键字只可以接收一个参数,而log many 关键字可以同时接收多个参数。

3. 强大的“Evauate”关键字。可以调用 Python 中的方法

  • 调用 Python 所提供的 random 模块下的 randint()方法,举例
  • 调用 Python 所提供的 os 模块中的 system()方法可以执行本地 Python 文件。一般情况下不建议通过 system()方法去执行外部程序。这样做其实就脱离了 Robot Framework,也就是说不管 Robot Framework 什么事了。我们尽量把要做的事情通过 Python 封装成关键字给 RobotFramework 使用。举例

4. “Import Library”导入库,导入模块,导入框架。举例:第三方py文件里面定义了add方法,可以用Import Library导入后引用add方法

结果是45

结果是9

Robot Framework 把 4和 5 当前两个字符串。所以 4 和 5 拼接起来是 45。我们可以将 4 和 5 转化成 int 类型,再调用 add,结果是9。

5.“Catenate”关键字,SEPARATOR关键字指定分隔符, 连接多个对象

${str1}= Catenate hello world  
${str2}= Catenate SEPARATOR=--- hello world
${str3}= Catenate SEPARATOR= hello world
  • ${str1} ='Hello world'     不指定分隔符时,默认分隔符是空格
  •  ${str2} ='Hello---world'   指定分隔符是---
  • ${str3} ='Helloworld'       指定分隔符是没有分隔符,字符之间就没有空格

6. get time”关键字,不带参数返回当前时间 2019-04-03 14:44:02,“,带参数可以返回:年,月,日,小时,分钟,秒

robotframework 入门笔记 (二) Builtin 库的关键字_第1张图片

7. sleep”关键字,不带参数默认休眠单位:秒.,可以指定参数: 1 day 2 hours 3 minutes 4 seconds 5milliseconds or 1d 2h 3m 4s 5ms。第2个可选参数是reason说明休眠的原因的

robotframework 入门笔记 (二) Builtin 库的关键字_第2张图片

8. “Comment”关键字用于设置脚本中的注释。也可以像 Python 一样使用“#”号进行注释

robotframework 入门笔记 (二) Builtin 库的关键字_第3张图片

scalar变量,list变量,dict变量

参考文档:https://blog.csdn.net/CCGGAAG/article/details/77720435

 

命令行中的变量

变量可以在命令行中设置,通过命令行设置的变量是全局变量,对其所有执行的用例都有效。它们将覆盖变量表格中的同名变量或是 通过变量文件引入到测试数据中的同名变量。

  • 设置单个变量语法: --variable(或者-v) name:value, “name”是不使用${}的变量名称, “value”则是其赋予的值。可以多次使用该选项设置多个变量。仅有标量变量可以使用该语法且只能赋值字符串。许多特殊字符在命 令行中很难表示,但可以使用转义字符转义它们,使用—escape 选项。
  • 使用变量文件的语法: --variablefile(或者-V) path/to/variables.py

举例:

--variable EXAMPLE:value

--variable HOST:localhost:7272

--variable USER:robot

--variable ESCAPED:Qquotes_and_spacesQ

--escape quot:Q

--escape space:_

robotframework 入门笔记 (二) Builtin 库的关键字_第4张图片

  • 使用 Set Test Variable 创建的变量,可以在该测试用例范围内的任何位置有效。例如,你在一个用户关键字 中创建了变量,它将在测试用例级别有效及当前测试中的所有其他用户自定义关键字中有效。其他测试用 例将看不到该变量。
  • 使用 Set Suite Variable 创建的变量,可以在当前测试集范围内的任何位置有效。使用该关键字创建变量同使 用测试数据文件的设置表格设置变量和引入变量文件相同。其他的关键字,包括可能的子测试集,都将不 能看到该关键字创建的变量。
  • 使用 Set Global Variable keyword 创建的变量, 在所有测试用例和测试集中有效。 通过该关键字创建的变量同 使用命令行选项-variable 或—variablefile 创建的变量相同。因为该关键字可以在任何地方改变变量值,所有 需要小心使用

Robotframework提供了三种变量类型来供选择,一种单个数据 Scalar、一种是列表List、一种是字典Dictionary.

 一般来说我们对于一些会被反复使用、不会经常变动、会从不同的模块里调用的数据,我们要创建全局变量来随时引用,并且,比如网址、xpath路径、测试数据等;

而那些临时的数据,需要随时获取、值不固定、临时存储的数据,比如说从网页获取的标题、某个元素的文本等,我们可以直接在case中临时创建。

  • 点击suite套件的右键菜单创建的变量,作用域在这个suite全局
  • 点击项目名称的右键菜单创建的变量,作用域在这个项目全局
  • 而在case中新建的变量作用域仅在case中

$:定义scalar变量;@定义list变量;&定义dict变量;

$还用来取值,包含scalar, list和dict变量,如下example所示

9 定义字典create dictionary

robotframework 入门笔记 (二) Builtin 库的关键字_第5张图片


Starting test: RobotFrameworkWebDemo.Login Tests.0403.keywordtest
20190403 23:41:32.247 :  INFO : &{dict1} = { key=value | foo=bar }
20190403 23:41:32.251 :  INFO : &{dict2} = { key=value | foo=bar }
20190403 23:41:32.253 : DEBUG : 
Argument types are:


20190403 23:41:32.255 :  INFO : &{dict3} = { 1=2 | key=value | foo=new }
20190403 23:41:32.259 : DEBUG : 
Argument types are:


Ending test:   RobotFrameworkWebDemo.Login Tests.0403.keywordtest

 

10. 定义列表

 

获取 列表/字典 返回值,

Get Element Size关键字举例:

  • Selenium2Library 的 Get Element Size关键字,返回的是列表。列表用 ${width}获取;
  • AppiumLibrary的Get Element Size关键字,返回的是字典。字典用 &{ui}[width] 获取。

Selenium2Library截图如下

robotframework 入门笔记 (二) Builtin 库的关键字_第6张图片

AppiumLibrary截图如下

robotframework 入门笔记 (二) Builtin 库的关键字_第7张图片

 

if循环语句

${a} 

Set variable

2

 

 

${b} 

Set variable

5

 

 

run keyword if

${a}>=1

log

a大于1

 

...

ELSE IF

${b}<=5

log

b小于等于5

...

ELSE

log

上面两个条件都不满足

 

 

首先定义两个变量a ,b 分别为 2 和5 。

run keyword if关键字,如果条件成立,则 输出 “a大于1 ”;

...  else if关键字, 如果条件成立,输出 “b小于等于5”;

... else 关键字,上面的条件都不满足,输出“上面两个条件都不满足”。

备注:注意sele if 和else前面的三个点点点(...)

for 循环语句

循环1

:FOR

${i}

in range

10

 

log

${i}

 

循环变量i 从0 到9 循环10次。

循环2

@{a}

create list

aaa

bbb

:FOR

${i}

in

@{a}

 

log

${i}

 

 

@{a} 定义为一个字符串列表。通过in 可遍历非整型(in range)

 

你可能感兴趣的:(入门系列)