如何在Robot Framework中调用基于Java和Python的库?

时间:2017-09-05 22:30:03

标签: java python python-2.7 robotframework

我已经在Java中完成了相当多的工作(足以说我有文化),并且只开始学习Python,因为我的公司在基于Python的Robot Framework中工作。但是,我开始意识到Java中基本的某些东西(看似允许缺乏经验)在Python中相当困难。是否有可能,如果是这样,可以做以下事情之一:

  • 答:在*** Settings ***部分调用基于Java的Robot Framework库,以及基于Python的库,或者......
  • B:在Robot Framework中调用基于Python的关键字,然后允许我在另一个文件中调用基于Java的关键字?

以下是我希望为选项A做的事情:

*** Settings ***
Library     MyPythonLibrary.py
Library     MyJavaLibrary.java

以下是我希望为选项B做的机器人框架方面:

*** Settings ***
Library     JavaPythonIntegratingLibrary

这是我希望为选项B做的大部分Python方面:

class JavaPythonIntegratingLibrary(object):
    def __init__(self):
        self.selenium_lib = BuiltIn().get_library_instance('ExtendedSelenium2Library')
    def java_keyword_name_1(self, *otherinputs):
        # This is where I'd put the code to execute Java code, which would return a boolean argument for pass/fail.
        if pass == True:
            BuiltIn().pass_execution()
        else:
            BuiltIn().fail()

我发现了JPype,唯一可以接受的答案(允许重复问题)这样的其他问题,但是JPype似乎不能用于我公司使用的Python 2.7.13版本。 Jython不可行,因为我的公司已经将Python 2.7.13作为其Robot Framework的基础。

我意识到这个问题非常接近"推荐或找到一本书,工具,软件库,教程或其他非现场资源",如果这可以通过Robot Framework完成用简单的方法来处理Python,Java或者#34;这就是我填写空白的方式"然后这就是我更喜欢的答案。如果它不能,或者如果你认为这个问题有点太接近那条线而你可以推荐一个更好的网站来接受这个问题,我就不会被冒犯,问题可以转移到那个网站

1 个答案:

答案 0 :(得分:1)

您可以使用remote library interface

您需要做的是创建一个可以运行Java代码的小型XMLRPC服务器。然后,您可以在开始测试之前运行该服务器,也可以在套件设置中启动测试。

服务器运行后,您就像使用任何其他库一样使用它。例如,假设您的关键字服务器在端口8270上运行,您可以将其导入到这样的测试套件中:

Library    Remote    http://127.0.0.1:8270

完成后,服务器实现的任何关键字都可以像普通关键字或Python关键字一样运行。

如果需要从Python调用这些函数,可以通过Python绑定使用BuiltIn关键字“run keyword”。例如:

from robot.libraries.BuiltIn import BuiltIn
def custom_keyword():
    BuiltIn().run_keyword("my java keyword", "arg1", "arg2")

有用的链接: