RobotFrameWork扩展本地库、远程库及引用第三方库

一、自己写模块本地扩展

 1.代码含类名
  代码含有类名类名必须和文件名一致mytestlibrary.py(同Java),注意此时方法参数多了self字段,实际只有a,b两个参数

class mytestlibrary():
	def add(self,a,b):
		return int(a)+int(b)

 2.代码块没有类名
  此时文件名没有特殊要求

def add(a,b):
	return int(a)+int(b)

 3.自己模块的引用
  如果文件放在文件夹site-packages下面则可以直接通过文件名mytestlibrary引用,
  如果放在别的目录,则通过绝对路径引用,例如D:/test/mytestlibrary.py,注意斜线而不是反斜线

建议如下方式扩展,据说如果在自己写的模块中引用了其他库则需要用这种方式才行,而且这种方式也方便以后远程库

 1:在python目录下lib\site-packages 建立库文件文件夹 MyLibrary
 2:在MyLibrary 内建立 MyTestLibrary.py 文件
  这个文件里面写自己的关键字(既方法)
   注意各种缩进,python中缩进错误也会报错

#coding=utf-8
class MyTestLibrary(object):
	def __init__(self):
		pass


	def add(self,a,b):
		"""
		传入两个值a、b并返回a、b相加的结果
		
		查看注释
		注意下面的竖线“|”与内容之间有空格,不然在robotframework中不会显示为表格样式
		Example:
        | ${result}        | Add          | 2                   | 5             |
		"""
		return int(a)+int(b)

 3:在MyLibrary 内建立 __init__.py 文件
  如下文件内容模板,注意类名要与库文件夹名称一致

from MyTestLibrary import MyTestLibrary

#这是版本号,此句可以省略
version = '1.0'

class MyLibrary(MyTestLibrary):
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'#这一句代表库是全局的

  如果有多个类MyTestLibraryMyTest2需要引用,如下

from MyTestLibrary import MyTestLibrary
from MyTest2 import MyTest2

version = '1.0'

class MyLibrary(MyTestLibrary,MyTest2):
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'

 4:RIDE中导入库,用文件夹名字导入就行

二、三方库的引用

  第三方库需要先安装,安装后直接用名字引用就行

三、远程引用

 1.开启远程库服务
  (1).下载安装:robotremoteserver
    robotremoteserver是一种远程库接口技术(remote library interface),扩展java需要用到;
    pip安装:pip install robotremoteserver
    下载安装:https://pypi.python.org/pypi/robotremoteserver/
    我是用下载安装的:python setup.py install
    据说只需要那个文件就行(robotremoteserver.py)
  (2).在python目录下lib\site-packages 建立库文件文件夹MyRemoteLibrary(文件夹名字随意取)
  (3).在MyRemoteLibrary内建立 MyTestLibrary.py 文件 并写入自己的扩展内容,格式跟本地库建立一样
  (4).在MyRemoteLibrary中新建__init__.py配置文件并写入配置内容
    远程库的使用和上面使用__init__.py配置文件配置本地库差不多,只是__init__.py的内容有点差别,如下;

import sys    
from robotremoteserver import RobotRemoteServer

from MyTestLibrary import MyTestLibrary

if __name__ == '__main__':     
    RobotRemoteServer(MyTestLibrary(),*sys.argv[1:])

  (5).启动远程库
    从cmd中进入__init__.py所在的目录MyRemoteLibrary执行python __init__.py命令出现下图便成功启动远程库,不过此时只能在本机访问
    这里写图片描述

    想要实现远程访问,将下载下来的robotremoteserver.py拷贝到刚刚建立的文件夹MyRemoteLibrary中,并修改如下部分内容

class RobotRemoteServer(object):

    def __init__(self, library, host='192.168.29.142', port=8270, port_file=None,
                 allow_stop='DEPRECATED', serve=True, allow_remote_stop=True):

    此处的ip是远端服务机的ip从过ipconfig查询,保存后再执行python __init__.py即可

 2.本地引用方式如下图,IP和端口是在服务端配置的,name是固定值
  RobotFrameWork扩展本地库、远程库及引用第三方库_第1张图片
目前还是单个库的远程扩展,多个库文件的远程扩展还在研究中
注:如果不使用__init__.py配置脚本文件则需要在每一个扩展文件中加上如下代码

#开头加
import sys    
from robotremoteserver import RobotRemoteServer

##结尾加
##MyTestLibrary是扩展文件名
if __name__ == '__main__':     
    RobotRemoteServer(MyTestLibrary(),*sys.argv[1:])

并且得一个一个的启动扩展文库件,所以用配置文件__init__.py批量启动更方便。

注意:如果同时想作为本地库和远程库,则将两个配置文件__init__.py综合下就行,综合后配置文件如下:

import sys    
from robotremoteserver import RobotRemoteServer

from MyTestLibrary import MyTestLibrary
from MyTest2 import MyTest2

class MyLibrary(MyTestLibrary,MyTest2):
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'

if __name__ == '__main__':     
    RobotRemoteServer(MyTestLibrary(),*sys.argv[1:])

 3.扩展java:
  需要用到jython,基于jvm的python
  Jython下载地址:http://www.jython.org

在python库中引用jar包的方法
纯Java实现robot远程库扩展

你可能感兴趣的:(自动化测试,RobotFrameWork)