如何将java类导入Robot框架库
我不明白如何在Robot框架中导入.jar文件 代码如下:如何将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 + "!")
*** 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文件的过程是相同的,并且不需要包含任何库
希望这能奏效
参考:
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.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个失败 ==============================================================================
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