Robot Framework自定义测试库导入方法

发表于:2020-11-20 09:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:小辣椒1213    来源:CSDN

  1. 测试库放在python的site-packages 路径下
  一般我们自己写的测试库会放在 python的site-packages 路径下,其他第三方库自动安装的也都在这个目录中,这样在导入库的时候,会自动识别。
  在python安装目录下的 Lib\site-packages 目录下 新建一个目录,目录名就是库名,如 NewLibrary
  在新建的NewLibrary目录下创建一个python文件,任何合法的文件名即可,扩展名为py。如:myclass.py
  其内容如下:
 class MyClass(object):
    def __init__(self):
        pass
 
    def printMsg(self,msg):
        print "hello "+msg
  上面代码定义了一个python类,其中除构造方法 init 外,还定义了一个printMsg方法,该方法其实就是rf中的关键字,可以直接在rf中使用。下面我们介绍。
  在新建的NewLibrary目录下创建 init.py 文件,文件名必须固定这样。该文件的功能,就是把关键字类暴露出来,让rf能知道。
  其内容如下:
 from myclass import MyClass

class NewLibrary(MyClass):
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'
  通过前面三个步骤,一个最简单的自定义的NewLibrary库就创建好了,在rf工具中就可以使用了
  先要导入 NewLibrary 库
  使用关键字printMsg。需要说明的是,在rf中引用时,既可以写成 printMsg,也可写成 print msg。一般习惯用空格把单词分开。因为rf关键字不区分大小写。
  2. 测试库有多个文件夹及多个library文件
  假如库名为epinLibrary, epinLibrary目录的__init__.py里面应包含所有类名:
import os
from epinLibrary.config import *
from epinLibrary.page import *
from epinLibrary.version import VERSION

__version__ = VERSION


class epinLibrary(
    Login,
    Job,
    Register,
Company

):
   ROBOT_LIBRARY_SCOPE = 'GLOBAL'
    ROBOT_LIBRARY_VERSION = VERSION

    def __init__(self, timeout=5, run_on_failure='Capture Page Screenshot'):
  子目录page下面的__init__.py内容如下:
from .login import Login
from .company import Company
from .job import Job
from .register import Register


__all__ = ["Login",
           "Company",
           "Job",
           "Register"]
  3. 把自定义的库放在项目的Library目录
  第一种方法有个不好的地方,就是库与项目目录分离,若我想把自定义的库放在项目的Library目录中,直接Import就会报failed,找不到这个库。
  找官方文档,里面给出了具体原因:
  http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#module-search-path
  python有个模块搜索路径,可以自己sys.path看下:
  如图,可以看到,里面包含了site-packages路径,所以在这个目录下的库是在python的模块搜索路径下的。
  所以,后面的思路就明确了,把自己项目的路径添加到python的模块搜索路径下,具体有几种方法可以实现:
  命令添加path路径
import sys
sys.path.append(r'/CODE/robotlib/')  # 这里append函数里的字符串就是你写的库文件的路径
  自定义的目录已经在python的模块搜索路径下了
  请确保库的文件名和CLASS名一致,这样 import 库名的时候,可以省略.py后缀
  注意,这里还有个问题,如果我的库文件不在模块搜索路径下,是在该路径的子路径下面,那其实直接import还是会搜索不到,这时加上相对路径即可。
Library               base_library/Tools.py  #加路径后,需加上.py后缀

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号