㈠ 如何用python写一个脚本,来跑java代码上的cucumber集成测试
1.直接执行Python脚本代码
引用 org.python包
1 PythonInterpreter interpreter = new PythonInterpreter();
2 interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); ///执行python脚本
睁坦2. 执行python .py文件
1 PythonInterpreter interpreter = new PythonInterpreter();
2 InputStream filepy = new FileInputStream("D:\\demo.py");
3 interpreter.execfile(filepy); ///执行python py文件
4 filepy.close();
3. 使用Runtime.getRuntime()执行脚本文件
这种方式和.net下面调用cmd执行命令的方式类似。如果执行的python脚本有引用第三方包的,建议使用此种方式。使用上面两种方式会报错手模java ImportError: No mole named arcpy。毕早缓
1 Process proc = Runtime.getRuntime().exec("python D:\\demo.py");
2 proc.waitFor();
㈡ 怎么使用java运行python脚本
如果是jython,也就是运行在Jvm上的python的话,可以使用JSR223,JDK1.6已经包含了该扩展包。JSR223是一个用于解析多种脚本语言的库包,其中包括Jython。除了JSR223包之外,还需要jython-engine.jar包。
ScriptEngine engine = new ScriptEngineManager().getEngineByName("python");
try
{
engine.eval(new FileReader("./script/listing.py"));
}
catch(ScriptException se)
{
}
catch(IOException ie)
{
}
或者参考:http://www.360doc.com/content/10/0608/23/1404822_32043230.shtml
很久之前用过ScriptEngine,对在Jvm上的脚本语言比如jruby,jython,groovy等支持性都很好,有点忘记了。
㈢ java执行python脚本获取返回值问题
java执行这个脚本并获取返回值是等待脚本执行完毕再获取返回的。
我不清楚你是通过什么方式来执行的。
不过你可以启动两个线程,一个线程开始执行脚本,一个线程去获取输出。
㈣ Java使用Runtime.getRuntime()去调用python时候,不能够实时输出python里面的print输出
这个就是管道的问题,在windows下经常会无语遇到这些问题。曾经为这个事情专门写了一个复杂的算法。
你换成linux开发环境再试验 ,就应该不存在这个问题了。 windows对于IO管理,包括标准IO支持的比较怪异。有时候它缓存了,有时候它不生效。