美文网首页Robot Framework自动化测试
Robot Framework自动化测试三

Robot Framework自动化测试三

作者: 我为峰2014 | 来源:发表于2018-01-20 14:44 被阅读49次

    从 F5 开始学习

    Robot Framework 并没有像其它框架一样提供一份完整的 API 文档,所以,我们没办法通过官方 API文档进行习。RIDE 提供了 F5 快捷键来打开帮助文档。

    image.png

    search term: 用于搜索关键字。

    source:用于选择相关库,默认在所有库下搜索关键字。

    创建分上下两部分,上部分显关键字列表,下半部分显示某一关键字的详细说明。你一定很好奇这些
    关键字的说明信息是哪儿来的?这说明是由 RIDE 读取的代码函数(方法)的系统注释获得的。

    测试项目与测试套件的概念

    如果你查看当前所创建的项目会发现,“测试项目”是一个目录。

    image.png

    “测试套件”则是一个 文件

    image.png

    “测试项目”和“测试套件”本质上并没有什么区别,如果你愿意,也可以把测试项目创建成一个文件:

    image.png image.png

    如果你把“测试项目”创建成一个文件后,那么在这个“测试项目”下就不能再创建“测试套件”了,
    只能创建测试用例。
    除非我们所创建的“测试项目”非常小,只需要几个用例。一般情况下,我们会选择将其定义成一个
    目录,这样它就可以分成多个套件,套件可定义为不同的业务,不同的业务下再分用例,结构会更加清晰。

    当然,你同样也可以把“测试套件”创建成一个目录。

    如果你把“测试套件”创建成了一个目录后,就不能直接在其下面创建用例了,还需要再创建的“File”
    类型的“子测试套件”。说白了就是用例只能创建在 file 类型的套件中。

    image.png

    常用关键字介绍

    log 就是“print”

    log 关键字就是编程语言里的“print”一样,可以打印任何你想打印的内容。
    在 test case 中填写以下内容:

    log hello world

    勾选测试用例,点击工具栏的“Run Tests”按钮或按快捷键“F8”执行测试用例。

    在 Run 标签页,将看到执行结果:

    通过运行结果中看到,“INFO:”的“hello world” 就是通过 log 关键字打印的信息

    定义变量

    在 robot Framework 中通过“Set variable”关键字来定义变量,如:

    ${a} Set variable hello world
    log ${a}

    执行结果

    Starting test: Test Pro.Test Demo.testcase1
    20180120 13:57:50.836 :  INFO : ${a} = hello world
    20180120 13:57:50.840 :  INFO : hello world
    Ending test:   Test Pro.Test Demo.testcase1
    
    

    连接对象

    “Catenate”关键字可以连接多个信息

    image.png

    执行结果

    Starting test: Test Pro.Test Demo.testcase2
    20180120 14:00:01.616 :  INFO : ${hi} = hello word
    20180120 14:00:01.620 :  INFO : hello word
    Ending test:   Test Pro.Test Demo.testcase2
    

    加上“SEPARATOR=”可以对多个连接的信息进行分割。

    image.png

    执行结果

    Starting test: Test Pro.Test Demo.testcase2
    20180120 14:01:43.640 :  INFO : ${hi} = hello---word
    20180120 14:01:43.644 :  INFO : hello---word
    Ending test:   Test Pro.Test Demo.testcase2
    

    定义列表

    通过“Create List”关键字可以定义列表。

    例 1

    image.png

    执行结果
    每个字符串前面加 u,是为了统一编码问题,将字符串转为 Unicode 编码。

    Starting test: Test Pro.Test Demo.testcase3
    20180120 14:04:20.944 :  INFO : ${abc} = [u'a', u'b', u'c']
    20180120 14:04:20.949 :  INFO : [u'a', u'b', u'c']
    Ending test:   Test Pro.Test Demo.testcase3
    

    例 2


    image.png

    如果通过“@{}”去定义列表的话,可以通过“log many”关键字进行打印

    执行结果

    Starting test: Test Pro.Test Demo.testcase3
    20180120 14:07:46.411 :  INFO : @{abc} = [ a | b | c ]
    20180120 14:07:46.416 :  INFO : a
    20180120 14:07:46.417 :  INFO : b
    20180120 14:07:46.418 :  INFO : c
    Ending test:   Test Pro.Test Demo.testcase3
    

    时间的操作

    在 Robot Framework 中也提供操作时间的关键字。

    (1) Robot Framework 中提供了“get time”关键字用来获取当前时间

    image.png

    执行结果

    Starting test: Test Pro.Test Demo.testcase4
    20180120 14:11:19.034 :  INFO : ${t} = 2018-01-20 14:11:19
    20180120 14:11:19.038 :  INFO : 2018-01-20 14:11:19
    Ending test:   Test Pro.Test Demo.testcase4
    

    (2) “sleep”关键字用来设置休眠一定时间。

    image.png

    sleep 关键字默认以“秒”为单位。

    执行结果
    通过前后两次获取当前时间的差,可以清楚的看到 sleep 休眠 5 秒所起的作用。

    Starting test: Test Pro.Test Demo.testcase4
    20180120 14:13:22.936 :  INFO : ${t} = 2018-01-20 14:13:22
    20180120 14:13:27.941 :  INFO : Slept 5 seconds
    20180120 14:13:27.944 :  INFO : ${t} = 2018-01-20 14:13:27
    Ending test:   Test Pro.Test Demo.testcase4
    

    if 语句

    通过“run keyword if”关键字可以编写 if 分支语句。

    image.png

    首先定义两个变量 a 等于 59 。
    If 判断 a 大于等于 90 ,满足条件 log 输出 “优秀 ”;
    不满足上面的条件,接着 ELSE IF 判断 a 大于等于 70 ,满足条件 log 输出 “良好”;
    不满足上面的条件,接着 ELSE IF判断 a 大于等于 60 ,满足条件 log 输出 “及格”;
    上面的条件都不满足,ELSE log 输出“不及格”。
    注:注意 ELSE IF和 ELSE 前面的三个点点点(...)

    执行结果

    Starting test: Test Pro.Test Demo.testcase5
    20180120 14:28:19.329 :  INFO : ${a} = 59
    20180120 14:28:19.341 :  INFO : 不及格
    Ending test:   Test Pro.Test Demo.testcase5
    

    for 循环

    在 Robot Framework 中编写循环通过“:for”。

    例 1,执行 10 次循环。

    image.png

    执行结果
    通过“:for”定义 for 循环;in range 用于指定循环的范围。
    注意,in range 定义为 10,它的范围是 0~9

    Starting test: Test Pro.Test Demo.testcase6
    20180120 14:31:28.426 :  INFO : 0
    20180120 14:31:28.435 :  INFO : 1
    20180120 14:31:28.441 :  INFO : 2
    20180120 14:31:28.447 :  INFO : 3
    20180120 14:31:28.454 :  INFO : 4
    20180120 14:31:28.460 :  INFO : 5
    20180120 14:31:28.466 :  INFO : 6
    20180120 14:31:28.473 :  INFO : 7
    20180120 14:31:28.480 :  INFO : 8
    20180120 14:31:28.487 :  INFO : 9
    Ending test:   Test Pro.Test Demo.testcase6
    

    例 2,遍历列表

    image.png

    “create list” 关键字用来定义列表(a,b,c),“@{}”用来存放列表。
    通过过“:for”循环来来遍历@{abc}列表中的字符。

    执行结果

    Starting test: Test Pro.Test Demo.testcase6
    20180120 14:33:41.149 :  INFO : @{abc} = [ a | b | c ]
    20180120 14:33:41.156 :  INFO : a
    20180120 14:33:41.161 :  INFO : b
    20180120 14:33:41.167 :  INFO : c
    Ending test:   Test Pro.Test Demo.testcase6
    

    例 3,循环中的判断

    image.png

    通过“Exit For Loop If”关键字时行 for 循环内的判断,当满足 Exit For Loop If 条件后,循环结束。

    执行结果
    从执行结果看到当循环到字符 c 时,Exit For Loop If 条件成立,结束循环;通过 log 打印当前的字符 c。

    Starting test: Test Pro.Test Demo.testcase6
    20180120 14:35:13.377 :  INFO : @{abc} = [ a | b | c ]
    20180120 14:35:13.395 :  INFO : Exiting for loop altogether.
    20180120 14:35:13.402 :  INFO : c
    Ending test:   Test Pro.Test Demo.testcase6
    

    强大的 Evaluate

    为什么说“Evauate”关键字强大呢。因为通过它可以使用 Python 语言中所提供的方法。

    例 1,生成随即数

    在 Python 中我们可以这样来引和并使用方法:

    >>> import random
    >>> random.randint(1000, 9999)
    3308
    

    random 模块的 randint()方法用于获取当前时间。
    在 Robot Framework 中使用“Evauate”也可以调用 Python 所提供的 random 模块下的 randint()方法。

    image.png

    执行结果

    Starting test: Test Pro.Test Demo.testcase7
    20180120 14:39:31.348 :  INFO : ${d} = 5773
    20180120 14:39:31.352 :  INFO : 5773
    Ending test:   Test Pro.Test Demo.testcase7
    

    例 2,执行本地程序

    image.png

    通过调用 Python 所提供的 os 模块中的 system()方法可以执行本地 Python 文件。至于在.py 文件中
    Python 可以做任何想做的事。
    对于 system()方法来说,它也不单单可执行 Python 文件,任何在 cmd 命令提示符下可运行文件和命
    令,它都可以执行。
    不过,一般情况下不建议通过 system()方法去执行外部程序。这样做其实就脱离了 Robot Framework,
    也就是说不管 Robot Framework 什么事了。我们尽量把要做的事情通过 Python 封装成关键字给 Robot
    Framework 使用。

    相关文章

      网友评论

        本文标题:Robot Framework自动化测试三

        本文链接:https://www.haomeiwen.com/subject/knqtaxtx.html