码迷,mamicode.com
首页 > 其他好文 > 详细

Robot Framework(15)- 扩展关键字

时间:2020-05-30 10:55:53      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:__init__   robot   声明   div   大小写   python   path   传参   入库   

如果你还想从头学起Robot Framework,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1770899.html

 

前言

  • 什么是扩展关键字?就是你自己写的 Python 文件,里面包含了函数或者类
  • 然后 RF 导入这个 Python 模块,就可以调用函数或者类方法,它们就是扩展关键字

 

Python 模块作为测试库

模块文件名作为测试库的名字

比如:Python 模块名叫 MyLibrary,文件名是 MyLibrary.py,那么测试库的名字就叫做 MyLibrary

 

Python 模块和 Robot 文件同目录下的栗子

这是目录结构哈

技术图片

python 模块的代码

def returnlist():
    return [i for i in range(10)]


def return_dict():
    return {"a": "hahhahahaahah"}


# 以下划线开头的函数不能作为RF关键字
def _returnlist2():
    return [1, 2]

robot 代码

技术图片

进入test目录下,运行以下命令

 robot -P . test.robot 

执行结果

技术图片

知识点

  • _前缀的方法不会作为关键字,在Python里面, _ 开头的方法是私有方法,RF 不会识别到它
  • Python 方法作为关键字也是大小写不敏感
  • RF 中会把关键字的 _ 和单个空格忽略掉,所以 returndict、return dict、return_dict 都是调用同一个关键字

 

导入 Python 模块的搜索规则

  • 先根据 robot 文件当前目录下查找库文件
  • 如果没有找到则再根据提供的 --pythonpath 或 -P 去寻找

 

Python 类作为测试库的栗子

项目目录

技术图片

所有 Python 测试代码都在 tlib2.py 里面哦

最终运行是在【15_扩展关键字】目录下运行的,命令如下

robot -P . testrf

 

栗子一:类初始化不需要传参

python 代码

class SubLibrary:
    def __init__(self):
        pass

    def returnint(self):
        return 2020

    def _returnint2(self):
        return 4

robot 代码

技术图片

测试结果

技术图片

知识点

  • 在类里面, _ 前缀的方法不会当做关键字
  • 同样,类中声明的方法当做关键字的话,大小写不敏感

 

栗子二:类初始化需要传参

python 代码

from robot.api import logger
class SubLibrary2: def __init__(self, host, port, table=test): self.host = host self.port = port self.table = table def printaddr2(self): logger.console(host:%s,port:%s,table:%s % (self.host, self.port, self.table))

robot 代码

技术图片

测试结果

技术图片

知识点

如果类的 __init__ 初始化方法需要传参,则在导入库后面跟对应的参数列表

拓展 Python 知识点:先有类对象,还是先执行类初始化方法?

 __new__ 方法产生对象

 __init__ 对象的初始化方法

先 new 一个对象,再 init 一个对象

 

栗子三:类名和模块名相同

python 代码

from robot.api import logger

class tlib2:
    def __init__(self, host, port):
        self.host = host
        self.port = port

    def printaddr(self):
        logger.console(host:%s,port:%s % (self.host, self.port))

robot 代码

技术图片

测试结果

技术图片

知识点

如果类名和模块名相同,可以不用导入类名

 

栗子四:使用路径法导入 Python 模块

Python 代码用的还是栗子三的

robot 代码

技术图片

测试结果

技术图片

知识点

如果用路径法,需要注意导入 Python 模块需要有文件后缀哦,且用 / 来表示目录下

 

Robot Framework(15)- 扩展关键字

标签:__init__   robot   声明   div   大小写   python   path   传参   入库   

原文地址:https://www.cnblogs.com/poloyy/p/12989402.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!