0

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

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

我们怎样才能克服这一点?

谢谢

4

1 回答 1

0

如果我没看错,您想在 Hudson 作业期间与正在执行的安装程序(在本例中使用 pexpect)进行交互,可能是为了进行自动化测试。

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

但是,Flexera有一个测试框架,允许您通过 JUnit 测试安装程序。看看这个页面的底部。或者查看JavaDocs

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

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

于 2013-05-29T02:47:12.427 回答