pexpect是适合子流程的工具吗?

时间:2013-03-07 04:31:10

标签: jenkins hudson pexpect installanywhere

我们有一个app.exe,它使用另一个第三方安装向导应用程序InstallAnywhere来安装我们的应用程序。 它是一个基于文本的向导 - 意味着生成一个新的shell(并且子进程正在执行一些java.exe以便其向导步骤工作) app.exe -i console 在父shell中执行。

在这种情况下,可以将pexpect用作一种问题/答案互动吗? 我们用Hudson尝试了它,但看起来Hudson只能监视父进程而不是它的子进程。当Hudson工作启动python脚本时,它会启动但无法从向导的第1步开始 - 它会挂起。

我们如何克服这个?

由于

1 个答案:

答案 0 :(得分:0)

如果我正确地阅读此内容,您希望在Hudson作业期间与执行的安装程序(在这种情况下,使用pexpect)进行交互,可能需要进行自动化测试。

我认为,如果你从shell脚本(或批处理文件)调用expect,而不是从Hudson运行,那么可能会让你到达你想去的地方。该脚本将使用您最喜欢的期望风格执行测试,在此期间它会成功退出或失败。哈德森会检测到失败,然后你可以做出相应的反应。您的脚本和任何期望的消息都会写入stdout,Hudson会将其收集到您的构建日志中。

但是,Flexera有一个测试框架,允许您通过JUnit测试安装程序。看看bottom of this page。或者查看JavaDocs

这可能会比预期的黑客更精确。您甚至可以编写Hudson插件并完全使用expect和shell脚本。

更新:在查看Javadoc之后,我发现主类GUIAutomationFixture使用Java的Robot类。这意味着您可能无法在无头服务器上运行此类。您可能需要Windows或具有可用X系统的Linux / Unix机箱。