我们有一个app.exe,它使用另一个第三方安装向导应用程序InstallAnywhere来安装我们的应用程序。它是一个基于文本的向导—意味着生成一个新的shell(并且子进程正在执行一些java.exe以便其向导步骤能够工作)App.exe -i console在父shell中执行
在这种情况下,pexpect可以用作一种问答交互吗?我们对Hudson进行了尝试,但似乎Hudson只能监视父进程而不能监视其子进程。当Hudson job启动python脚本时,它启动了,但没有在向导的第1步启动——它挂起了。
我们如何克服这个问题?
谢谢
如果我理解正确的话,您希望在Hudson作业期间与正在执行的安装程序交互(在本例中使用pexpect),可能是为了进行自动化测试。
我在想,如果你从shell脚本(或批处理文件)调用expect, expect 可能会让你到达你想去的地方,也就是说,反过来,从Hudson运行。脚本将使用您喜欢的expect风格执行测试,在此期间,它要么成功退出,要么失败。Hudson将检测到故障,然后您可以做出相应的反应。你的脚本,和任何期望的消息,将写入标准输出,Hudson将收集到你的构建日志。
然而,Flexera有一个测试框架,允许你通过JUnit测试安装程序。看这一页的底部。或者查看javadoc。
这可能会比预期的hack提供更高的精度。你甚至可以编写一个Hudson插件,完全使用expect和shell脚本。
更新:在查看了Javadocs之后,我发现主类GUIAutomationFixture使用Java的Robot类。这意味着您可能无法在无头服务器上运行该类。您可能需要Windows或带有工作X系统的Linux/Unix机器。