美文网首页
Robot Framework14-RF扩展关键字

Robot Framework14-RF扩展关键字

作者: 筱媛媛 | 来源:发表于2019-07-30 19:22 被阅读0次

    本篇将对RF扩展关键字进行展开讲解,包括“python模块作为测试库使用,python类作为测试库以及python库的搜索规则”。希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!

    01:本节内容介绍
    RF扩展关键字思维导图.png
    02:python模块作为测试库

    1)概述:python模块(python文件)作为测试库,本质就是python函数

    • 模块文件名作为测试库的名字
    • 比如python模块叫MyLibrary,对应的python文件是MyLibrary.py。那么测试库名字就是MyLibrary
    • 定义在python模块中的函数,名称前有_前缀的不会作为关键字(在python中带下划线的函数一般默认为私有函数,不对外公开)
    • 使用关键字的时候,中间可以加上任意的空格但不能超过2个,关键字不区分大小写
    #python模块代码如下
    def returnlist():
       return _returnlist2()
    def _returnlist2():
       return [1,2]
    

    2)RF引入python模块(要保证在Python模块搜索路径中,这样 RF才能找到它)引用方法与python变量一致

    *** Settings ***
    Library mylib2
    

    3)RF使用扩展关键字

    *** Test Cases ***
    case01
       ${a}    returnlist
       log to console  ${a}
    case02
       ${a}    _returnlist2
       log to console  ${a}
    运行结果如下:
    case01                                                     | PASS |
    --------------------------------------------------------------------
    case02                                                     | FAIL |
    No keyword with name '_returnlist2' found. Did you mean:
       mylib2.Returnlist
    --------------------------------------------------------------------
    
    03:自定义关键字名称

    1)概述:改变函数名,可以给关键字换个名字

    2)方法:导入Robot API下面的装饰器 keyword

    3)装饰器代码如下:

    from robot.api.deco import keyword 
    
    @keyword('Hi')
    def returnlist():
       return [1,2]
    

    4)RF导入模块并使用扩展关键字

    *** Settings ***
    Library mylib2
    case03
       ${a}    Hi
       log to console  ${a}
    运行结果如下:
    --------------------------------------------------------------------
    case03                                                     | PASS |
    --------------------------------------------------------------------
    
    04:Python类作为测试库

    1)概述:把python类名作为RF测试库的名字

    • 名称前有_前缀的不会作为关键字
    • 类中初始化方法有必填参数,导入时需要传入参数
    • 类名和模块名相同,导入时可以省略类名

    2)比如python模块叫mylib2,对应的 python文件是mylib2.py。这个模块文件中有个类名字叫SubLibrary

    class SubLibrary():
       def __init__(self,a,b):
           self.a = a
           self.b = b
       def returnint(self):
           return 3
    

    3)RF导入有参数的类并使用扩展关键字

    *** Settings ***
    #类中初始化方法有必填参数,导入时需要传入参数
    Library mylib2.SubLibrary  1   2
    case04
       ${a}    Hi
       log to console  ${a}
    

    4)RF导入文件名和类名相同的类

    *** Settings ***
    Library   SubLibrary
    
    05:python扩展库搜索规则

    1)规则:完全是按照python的模块搜索规则来的

    2)模块法mylib2.SubLibrary

    *** Settings ***
    Library   mylib2.SubLibrary
    

    3)路径法pylib/mylib2.py

    *** Settings ***
    Library   pylib/mylib2.py
    

    4)规则总结如下:

    • 在setting中申明资源文件和变量文件路径,目录之间的分隔符,不用“·”而是用“/”
    • 在setting中申明测试库
    • 路径,目录之间的分隔符,可以用“·”也可以用“/”
    • 路径分隔符用“·”后面不加py,用“/”后面加py
    • 建议项目根目录作为模块搜索路径

    相关文章

      网友评论

          本文标题:Robot Framework14-RF扩展关键字

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