Perl 6:基于终端的程序的自动测试

问题描述 投票:2回答:3

我如何自动与命令行程序进行交互,这些命令行程序使用Perl 6公开文本终端接口以进行测试?

testing terminal interactive perl6
3个回答
5
投票

如果你想使用Perl 6自动执行或测试控制台应用程序,我认为你将使用NativeCallexpect库进行交互。一旦安装了expect,man libexpect将显示其API文档,但访问文档的方式(例如联机帮助页名称)可能因包分发而异。

Expect有API启动程序,等待文本出现在(模拟)控制台上(“期望”文本),并将文本发送到控制台(模拟打字)。最常见的用例是自动化需要密码输入的程序。 Expect通常是脚本化的 - 它是一个解释器 - 但是没有理由不从更高级的编程语言中使用它。

编辑:我有点回答错误的问题。 OP有兴趣使用Perl 6测试Perl 6模块。也就是说,使用expect启动第二个使用该模块的Perl 6解释器仍然是测试应用程序的最强,最严格的方法。您不需要知道模块使用什么类型的终端库,因为期望应该与几乎所有它们兼容。您可以将文本发送到子进程的STDIN管道,但这不如您可以从预期获得的子进程(控制台)通信那样强大。我不知道是否有办法劫持模块使用的终端库并直接与之通信。


1
投票

如果它只是一个简单的界面,你可以只是run程序并收集输出。目前实验性的Testo moduleis-run常规。您可以直接使用它,或者如果实验状态很麻烦,请将guts of it复制到您自己的帮助程序中。


0
投票

看看Sparrow6 Task Check Language - 基于Perl6的DSL来验证文本输出。我已经做了很多终端应用程序测试使用它。

© www.soinside.com 2019 - 2024. All rights reserved.