自动化命令行应用程序的集成testing

我有一组命令行应用程序,其testing我想自动化。 这是为了testingIaaS云设置,所以testing将调用启动新的虚拟机实例(例如euca-run-instances),然后确保它们可以通过sshlogin,甚至在远程机器上运行一些简单的应用程序。

那里有没有设​​计用来进行这种testing的框架? 我知道有一些框架可以使运行unit testing变得更容易,而且我知道像(p)这样的东西可以与ssh之类的东西进行交互,但是我不知道生活在这两个世界交汇处的工具。

你需要调用的所有东西都是面向命令行的? 看看没有比bash更进一步。 恐怕没有图书馆会比现在更为普遍。

你甚至可以做远程测试:

$ ssh user@server /bin/false ; echo $? 1 $ ssh user@server /bin/true ; echo $? 0 

这意味着您可以编写脚本,将其上传到服务器,远程执行并使用退出代码来确定成功(0)或失败(1)。

当然,这并不能解决你所有的问题。 确切的测试策略取决于你的情况。 分解你的工作,让你的生活更轻松。

  • vm安装程序
  • vm测试
  • 虚拟机部署(服务器特定的东西添加在这里)
  • 部署虚拟机测试
  • 部署vm清理(删除测试的东西)

看看shunit,省下编写自己的单元测试框架的麻烦。 虽然我不能真正扩大。 我写了自己的工具后才发现它。

我已经使用pexpect和pyhton的单元测试成功测试了我们的LDAP系统到客户端服务器的集成。

我们围绕pexepect的子pxssh编写了一个包装类,它明确地围绕着ssh hadedeling。 我们将函数写入pxssh类,不仅可以捕获输出,还可以返回$的值。 命令结束后。

当我们转到单元测试时,这给了我们灵活性。 测试在哪里然后能够写,以便我们可以测试输出条件,甚至是返回值。

我们在哪里可以进行单元测试:

  • 成功登录
  • 预计登录失败
  • 预期文件夹
  • 预期的文件
  • 登录横幅的存在

作为这项工作的一个后果,我们调整了pxssh类到超过1000个linux主机的re-ip / resolver,这使得我们的构建工作变得更容易。 对不起,我不能分享更多具体的代码作为工作拥有它(虽然我希望能让他们释放它)

这里是我的提示:你可以使用一个中央主机,并使用ssh密钥文件授权运行“ssh user @ host cmd”因此,您可以更轻松地控制多个主机。

克拉姆似乎有这个功能。

给定一个cli的用法,并且测试文件以降价的方式进行预期输出的Cli-unit测试,所以你可以把它们包含为文档(例如在你的自述文件中)

例如README.md

 ### test: echo foo should output "foo" #### when: echo foo #### then: foo 

然后运行它:

 cli-unitw.sh README.md Pass (1/1 tests successful) 

( 在这里阅读更多关于cli-unit)