我有一组命令行应用程序,其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)。
当然,这并不能解决你所有的问题。 确切的测试策略取决于你的情况。 分解你的工作,让你的生活更轻松。
看看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)