Perl:测试输入阅读器?

时间:2013-07-02 17:56:04

标签: perl module stdin cpan

有没有办法使用标准的Test等模块自动测试Perl程序是否正在读取输入。 STDIN正常吗?例如。测试从STDIN读取两个整数的程序并打印它们的总和。

2 个答案:

答案 0 :(得分:5)

我不是100%清楚你的意思,我会假设你想要编写一个测试你的主程序的测试脚本,作为测试的一部分需要通过STDIN传递测试输入数据。

如果您的程序输出它所读取的内容,您可以轻松地执行此操作。您不需要特殊的测试模块 - 只需:

  1. 通过系统调用将您的程序调用为

    • 使用

      将测试程序的STDIN和STDOUT重定向到您的测试脚本
      • IPC::Open2模块通过管道向文件句柄打开双方,

      • ...或者,构建您的命令以重定向到/从文件中读取/写入测试脚本中的文件

  2. 检查您在最后一步中收集的测试程序的STDOUT,以确保打印正确的值。

答案 1 :(得分:0)

如果您想测试STDIN是否连接到终端,请使用-t,如下所示:

if( -t STDIN ){
    print "Input from a terminal\n";
}else{
    print "Input from a file or pipe\n";
}

请参阅http://perldoc.perl.org/perlfunc.html#Alphabetical-Listing-of-Perl-Functions