Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将java类导入Robot框架库_Java_Python_Robotframework - Fatal编程技术网

如何将java类导入Robot框架库

如何将java类导入Robot框架库,java,python,robotframework,Java,Python,Robotframework,我不明白如何在Robot框架中导入.jar文件 代码如下: *** Settings *** Library MyLibrary *** Test Cases *** My Test Do Nothing Hello world 和Java: public class MyLibrary { public void hello(String name) { System.out.println("Hello, " + name + "!")

我不明白如何在Robot框架中导入.jar文件

代码如下:

*** Settings ***
Library   MyLibrary

*** Test Cases ***
My Test
    Do Nothing
    Hello    world
和Java:

public class MyLibrary {

    public void hello(String name) {
        System.out.println("Hello, " + name + "!");
    }

    public void doNothing() {
    }

}
在.jar中提取后,我放入C:\Python27\Lib\site packages\MyLibrary,并创建了空的
\uuuuu init\uuuuu.py
文件。在使用以下命令执行Robot文件后:
pybot TestJavaLibrary.Robot

[ WARN ] Imported library 'MyLibrary' contains no keywords.
==============================================================================
TestJavaLibrary
==============================================================================
My Test                                                               | FAIL |
No keyword with name 'Do Nothing' found.

如何使用这个jar,就像外部库一样?

您必须使用jython(jybot)。还有其他设置,如JYTHONPATH。

我也参与过同样的项目,该项目要求通过robot框架调用Java类。下面是导入Java库的一个简短示例:

文件
myJavaLibrary.java

public class myJavaLibrary{

    public void my_java_add(int i, int j, int k) {
        if(i+j == k)
            return;
        System.out.println("Invalid Sum");
        assert false;
    }

}
使用命令:javacmyjavalibrary.java

这将在同一目录中创建一个.class文件:myJavaLibrary.class

在robot文件中导入此文件:

文件:test.robot.txt

*** Settings ***

Library       myJavaLibrary.java

*** Test Cases ***

User defined Java Test

    My Java Add     5   7   12
您可能会注意到,库myJavaLibrary.java添加在设置部分,因为robot文件与.class文件位于同一目录中。您可以为相同的路径添加绝对路径

您可能需要安装jython来运行robot文件

最后使用命令:

jython-m robot test.robot.txt

最终输出可以在run文件夹中的log.html文件中看到

对于JAR导入:

在环境变量中包含.jar文件的绝对路径:

变量名:类路径

变量值:“包含Jar的目录的绝对路径”\*

在这种情况下,运行robot文件的过程是相同的,并且不需要包含任何库

希望这能奏效

参考:

  • 您需要jython来运行测试,这意味着您需要安装jython来运行测试
  • 导入java库时不需要特殊操作
  • 您需要告诉jybot在哪里可以找到java库或类
  • jybot——python通过您的测试
    //e、 g。
    jybot—pythonpath c:/test project/target/classes您的_测试
    
    我想明白了

    ===================环境================

    **********系统窗口10

    首先,您需要安装jdk、jython和robot框架

    (注:jython不需要python2.7或其他python sdk。)

    **********总的来说

    jdk我用的是拉链

    jython我使用安装程序JAR2.7.2b3,双击并使用InstallAll模型

    robot我使用master下载主代码zip,然后使用“jython setup.py安装”

    我没有将“CLASSPATH”添加到Windows系统环境“PATH”中,稍后我会说明原因

    我刚刚将D:\Tools\jython2.7\bin添加到Windows系统环境“PATH”中

    **********IDE:eclipse+red编辑器

    1.从elipce markplace下载红色编辑器并安装

    2.在ECLICE PERFEMANCE-->机器人框架-->安装框架->切换中配置机器人框架(如果不起作用,可以在D:\Tools\jython2.7\bin处手动设置cofig路径)

    让我们来解决你的问题

    ===============准备java jar======================

    0.为robot框架准备jar或class/java文件

    本节我使用一个jar

    1.新的Maven项目->robot-utils4j

    2.新的HelloWorld类

    package org.mfm.robot.utils4j;
    
    public class HelloWorld {
        public void hello(String name) {
            System.out.println("Hello, " + name + "!");
        }
    
        public void doNothing() {
        }
    
    }
    
    2.pom.xml

    <groupId>org.mfm</groupId>
        <artifactId>robot-utils4j</artifactId>
        <version>1.0.0</version>
        <packaging>jar</packaging>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
    
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <phase>package</phase>
                            <goals>
                                <goal>assembly</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
    4.运行它,您将获得以下结果:

    Command: jython.exe -J-Dpython.path=D:\Tools\jython2.7\Lib\site-packages -J-cp .;D:\AllWorkspace\lib\robot-utils4j-1.0.0-jar-with-dependencies.jar;D:\AllWorkspace\lib\/*.jar -m robot.run --listener C:\Users\65787\AppData\Local\Temp\RobotTempDir8138272493583159262\TestRunnerAgent.py:14246 --argumentfile C:\Users\65787\AppData\Local\Temp\RobotTempDir8138272493583159262\args_2df9cc70.arg D:\AllWorkspace\EWorkspace4Java\RobotDemo
    Suite Executor: Robot Framework 3.2b2 (Jython 2.7.2b3 on java1.8.0_231)
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    ==============================================================================
    RobotDemo                                                                     
    ==============================================================================
    RobotDemo.JavaHello                                                           
    ==============================================================================
    My Test                                                               | PASS |
    ------------------------------------------------------------------------------
    RobotDemo.JavaHello                                                   | PASS |
    1 critical test, 1 passed, 0 failed
    1 test total, 1 passed, 0 failed
    ==============================================================================
    RobotDemo                                                             | PASS |
    1 critical test, 1 passed, 0 failed
    1 test total, 1 passed, 0 failed
    ==============================================================================
    Output:  D:\AllWorkspace\EWorkspace4Java\RobotDemo\output.xml
    Log:     D:\AllWorkspace\EWorkspace4Java\RobotDemo\log.html
    Report:  D:\AllWorkspace\EWorkspace4Java\RobotDemo\report.html
    
    此外,我还使用redisson连接robot-utils4j-1.0.0-jar-with-dependencies中的redis集群

    1.代码

    robot-utils4j的代码:

    package org.mfm.robot.utils4j;
    
    import org.redisson.Redisson;
    import org.redisson.api.RBucket;
    import org.redisson.api.RedissonClient;
    import org.redisson.config.Config;
    
    public class RedisClient {
    
            private static RedissonClient  instance = null; 
    
            /**
             * 获取连接redis的Session
             * @param clusterNodes "redis://127.0.0.1:7000", "redis://127.0.0.1:7001"
             * @param password abc123
             * @return
             */
            public RedissonClient getRedissonClient(String clusterNodes,String password) {
                Config config = new Config();
                config.useClusterServers()
                    .setScanInterval(2000) 
                    .setPassword(password)
                    .addNodeAddress(clusterNodes.split(","));
                if(instance == null) {
                    instance = Redisson.create(config);
                }
                return instance;
            }
    
            public static void main(String[] args) {
                RedisClient redisClient = new RedisClient();
                RedissonClient redissonClient = redisClient.getRedissonClient("redis://172.16.2.132:7001, redis://172.16.2.133:7002,redis://172.16.2.134:7003", "keplerredis");
                System.out.println(redissonClient+"连接成功。。。。");
            }
    
            public String getKey(String key) {
                RBucket<String> rvalue = instance.getBucket(key);
                System.out.println("获取key"+key+"的值"+rvalue.get());
                return rvalue.get();
            }
    
            public void setKeyValue(String key,String value) {
                RBucket<String> rvalue = instance.getBucket(key);
                System.out.println("获取key"+key+"的值"+rvalue.get());
                rvalue.set(value);
            }
    }
    
  • 运行它

    ============================================================================== RobotDemo::python.path
    ============================================================================== 机器人演示。机器人演示
    ============================================================================== RobotDemo.RobotDemo.RedisDemoJava
    ============================================================================== 我的测试组织redisson。Redisson@10bdfbcc |通过| ------------------------------------------------------------------------------ RobotDemo.RobotDemo.RedisDemoJava |通行证| 1个关键测试,1个通过,0个失败 共1个测试,1个通过,0个失败 ============================================================================== 机器人演示。机器人演示|通过| 1个关键测试,1个通过,0个失败 共1个测试,1个通过,0个失败 ============================================================================== RobotDemo::python.path | PASS| 1个关键测试,1个通过,0个失败 共1个测试,1个通过,0个失败 ==============================================================================

  • *************关于

    图书馆A

    库A.java

    图书馆A班

    public class A{
    
        public void hello(String name) {
            System.out.println("Hello, " + name + "!");
        }
    
        public void doNothing() {
        }
    
    }
    
    
    
    *** Settings ***   
    Library    A
    #or Libary    A.java    this way is also ok 
    #or Libary    A.class   this way is also ok 
    #Both of these need javac A.java ,you need hava a A.class 
    
    *** Test Cases ***
    My Test
        Do Nothing
        Hello    world 
    
    *************关于robot Common和jython使用Java或类文件运行

    在同一目录中,您需要编译A.java

    javac A.java

    A.java
    
    A.class
    
    JavaHello.robot
    
    运行命令

    robot --pythonpath=. JavaHello.robot
    #or
    jython -Dpython.path=. -m robot.run JavaHello.robot
    #or
    jython -J-cp . -m robot.run JavaHello.robot
    
    *************关于机器人commont和jython拿着罐子跑步

    jar-cvf my.jar A.class
    
    拿我的罐子

    您可以使用这个commond运行它,注意

    cd D:\AllWorkspace\EWorkspace4Java\RobotDemo\
    D:
    jython -J-cp D:\AllWorkspace\lib\my.jar -m robot.run JavaHello.robot
    
    jython -Dpython.path=D:\AllWorkspace\lib\my.jar -m robot.run JavaHello.robot
    
    jython -Dpython.path=D:\AllWorkspace\lib\/*.jar -m robot.run JavaHello.robot
    

    如果在window env“PATH”中配置CLASSPATH=D:\AllWorkspace\lib\my.jar

    关于JYTHONPATH PythonPath类路径

    您可以从robot framework github文档获得更多信息和差异


    Ref:

    是的,我设置了JYTHONPATH,但仍然是相同的错误。你说jython是什么意思?我刚安装,我设置了环境,但又出现了相同的错误。请按照上的说明操作。不要将Python与Java混合,不要创建init.py。是的,我已经阅读了所有内容,我无法理解如何执行此操作。这就是为什么我在这里问我有PYTHONPATH:
    C:\Python27\Lib\site packages
    。在这个文件夹中,我有MyLibrary文件夹,因此.jar的路径是:
    C:
    
    A.java
    
    A.class
    
    JavaHello.robot
    
    robot --pythonpath=. JavaHello.robot
    #or
    jython -Dpython.path=. -m robot.run JavaHello.robot
    #or
    jython -J-cp . -m robot.run JavaHello.robot
    
    jar-cvf my.jar A.class
    
    cd D:\AllWorkspace\EWorkspace4Java\RobotDemo\
    D:
    jython -J-cp D:\AllWorkspace\lib\my.jar -m robot.run JavaHello.robot
    
    jython -Dpython.path=D:\AllWorkspace\lib\my.jar -m robot.run JavaHello.robot
    
    jython -Dpython.path=D:\AllWorkspace\lib\/*.jar -m robot.run JavaHello.robot
    
    robot --pythonpath=D:\AllWorkspace\lib\my.jar JavaHello.robot
    robot --pythonpath=D:\AllWorkspace\lib\/*.jar JavaHello.robot
    
    robot JavaHello.robot
    jython  -m robot.run JavaHello.robot