我正在使用此代码: http://groovy.codehaus.org/Expect+for+Groovy
尝试自动化基于python的CLI。
我的测试主要功能如下。
然而,运行它似乎从未实际从进程中读取数据。 如果我将进程更改为/ bin / ls并期望一些文件名,它将正常工作,这使我相信它无法处理python正在等待输入的事实,而/ bin / ls关闭流并刷新它。 / p>
有什么想法吗?感谢。
public static void test2(String[] args){
println "Main"
def builder = new ProcessBuilder("/usr/bin/python");
builder.redirectErrorStream()
builder.redirectOutput(ProcessBuilder.Redirect.PIPE);
builder.redirectInput(ProcessBuilder.Redirect.PIPE);
def expectSession = new IOSession(builder.start());
expectSession.expect(">>>");
expectSession.send("print(%d) % (1+1)")
expectSession.expect("2");
expectSession.send("quit()");
expectSession.close();
println "Done...";
}
答案 0 :(得分:0)
查看IOSession
的来源,看起来这可能是构造函数中的错误。尝试:
def expectSession = new IOSession();
expectSession.addProcess(builder.start());
此外,您必须将\r
添加到要发送的字符串的末尾。