RobotFrameWork(十)Remote远程库使用

来源:互联网 发布:mac os x系统dmg镜像 编辑:程序博客网 时间:2024/05/16 14:06

使用原因:

① 测试需要跨越多个物理机器,且有的测试库也必须部署在被测系统上。比如:客户端需要在两台系统分别为windows和linux的服务器下,执行测试环境的初始化及清理工作。

② 一个测试要使用多个库,但是有的只能用jybot运行,有的只能用pybot运行(这种情况很常见)

远程库接口的原理:

  为了解决上述两个难题,Robot Framework提供了远程库接口技术(remote library interface)

  什么是远程库接口技术呢?其实很简单,远程库接口就是把原来的测试库变成了三部分

  一部分我们可以叫他远程库(Remote Library),第二部分叫做远程服务器(Remote Server),第三部分是真正的测试库(Test Library)。测试库提供真正的测试功能,它被远程服务器包裹起来,通过XML-RPC协议被远程库访问(见下图)。它的实现思路说白了就是设计模式中的Proxy模式。


操作步骤:

1.服务端操作:

1) 下载robotremoteserver.py并修改:

  Robotremoteserver.py为远程服务脚本,客户端通过它来调用服务器端的测试库来执行测试,下载地址如下:

http://robotframework.googlecode.com/hg/tools/remoteserver/robotremoteserver.py

Robotremoteserver.py中需要修改的地方只有一个,为下图中黄色部分:

    def __init__(self, library,host='192.168.8.231', port=8270 , allow_stop=True):

        SimpleXMLRPCServer.__init__(self, (host, int(port)), logRequests=False)

        self._library = library

        self._allow_stop = allow_stop

        self._register_functions()

        self._register_signal_handlers()

        self._log('Robot Framework remote server starting at %s:%s'

                  % (host, port))

        self.serve_forever()

修改:Robotremoteserver.py需要放置在服务端;

            设置hostport为服务器端ip及端口

2) 创建服务器端测试库(test library,测试库exampleremotelibrary.py脚本内容如下:

[python] view plain copy
 print?
  1. #!/usr/bin/env python  
  2.   
  3. import os  
  4. import sys  
  5. class ExampleRemoteLibrary:  
  6.     def __init__(self):  
  7.         """Also this doc should be in shown in library doc."""  
  8.   
  9.     def start_efastserver(self):  
  10.         os.system('source ./start_efast.sh')  
  11.   
  12.     def strings_should_be_equal(self, str1, str2):  
  13.         print "Comparing '%s' to '%s'" % (str1, str2)  
  14.         if str1 != str2:  
  15.             raise AssertionError("Given strings are not equal")  
  16.   
  17. if __name__ == '__main__':  
  18.     from robotremoteserver import RobotRemoteServer  
  19.     RobotRemoteServer(ExampleRemoteLibrary(), *sys.argv[1:])  

上面“start_efastserver”和 “strings_should_be_equal”为在服务端执行操作的函数,例如:脚本中函数start_efastserver 就是在服务端执行命令‘source ./start_efast.sh’,进行开启EFAST服务操作。

3) 运行服务端测试库

 在服务端执行如下命令:

  ‘python   exampleremotelibrary.py


客户端:

4) 测试套(suite)中引入Remote

注意:Remote后面的参数是服务器的ip及端口

5) 在用例中调用远程测试库

 我们调用strings_should_be_equal这个函数,检测下:

  

6)执行用例:



附注:

https://code.google.com/p/robotframework/wiki/RemoteLibrary


本文中使用原因和远程库接口的原理来自以下文章:

http://www.ltesting.net/ceshi/ceshijishu/zdcs/robotframework/2012/0305/204291.html