我如何自动化与命令行程序的交互,这些命令行程序公开Perl 6的文本终端界面以进行测试?
发布于 2017-12-26 20:16:16
如果您想使用Perl6自动执行或测试控制台应用程序,我认为您可以使用NativeCall与expect库进行交互。一旦安装了expect,man libexpect将显示其API文档,尽管访问文档的方式(例如手册页名称)可能会因包分发而有所不同。
Expect有一些API可以启动程序,等待文本出现在(模拟的)控制台上(以“期望”文本),并将文本发送到控制台(以模拟键入)。最常见的用例是自动化需要输入密码的程序。Expect通常是脚本化的--它是一个解释器--但是没有理由不从更高级的编程语言中使用它。
编辑:我回答错了问题。OP对使用Perl 6测试Perl 6模块很感兴趣。也就是说,使用expect启动第二个使用该模块的Perl 6解释器仍然是测试应用程序的最强大、最严格的方法。您不需要知道模块使用什么类型的终端库,因为expect应该与几乎所有的终端库兼容。您可以向子流程的STDIN管道发送文本,但这比不上可以从expect获得的子流程(控制台)通信。我不知道是否有一种方法可以劫持模块使用的任何终端库并直接与其通信。
发布于 2018-01-10 02:21:44
如果它只是一个普通的界面,你可以简单地run程序并收集输出。目前正在实验的Testo module有is-run例程。您可以直接使用它,或者如果实验状态很麻烦,将guts of it复制到您自己的帮助器例程中。
发布于 2019-03-20 21:33:16
看看基于Sparrow6 Task Check Language - Perl6的领域特定语言来验证文本输出。我用它做了很多终端应用测试。
https://stackoverflow.com/questions/47975599
复制相似问题