【问题标题】:How do I check the exit code in Test::More?如何检查 Test::More 中的退出代码?
【发布时间】:2009-02-24 04:07:45
【问题描述】:

根据 Test::More documentation,它会根据您的测试结果以某些退出代码退出。 我的问题是,如何检查这些退出代码?

ps。我正在尝试自己建立一个安全带。有没有我可以使用的简单安全带?

ps2。 Test::Harness 帮了我大忙。特别是 execute_tests 函数。此函数返回我想要的所有统计信息。感谢所有提供有用链接的人。

【问题讨论】:

    标签: perl testing


    【解决方案1】:

    任何体面的安全带程序(例如prove)都会为您做到这一点,您绝对没有理由自己这样做。

    【讨论】:

    • 其实我自己也在做一个安全带。我会试试看。谢谢。
    【解决方案2】:

    这是一个进程返回码。如果在某些 Unix 变体的 shell 下运行,您通常可以将其检索为 $?。 (这可能使您的问题更多地是关于 bash 而不是 perl)

    常用成语:

    perl your_file.t
    if [[ $? -gt 10 ]]; then
      echo "Wow, that's a lot of failures"
    elif [[ $? -gt 0 ]]; then
      echo "Tests failed"
    else
      echo "Success!"
    fi
    

    或者,如果您只对成功/失败感兴趣:

    perl your_file.t || echo "Something bad happened."
    

    【讨论】:

      【解决方案3】:

      如果您从 Perl 调用您的测试程序,那么困难的(和传统的)方法涉及对$? 进行黑暗和可怕的位移。如果您真的想了解如何操作,可以在 system function documentation 中阅读相关内容。

      不错的方法涉及使用一个模块,该模块为您提供system 样式函数,该函数为您处理返回值:

      use IPC::System::Simple qw(systemx EXIT_ANY);
      
      my $exit_value = systemx( EXIT_ANY, 'mytest.t' );
      

      EXIT_ANY 符号允许您的脚本返回任何退出值,然后我们可以捕获这些值。如果您只是想确保您的脚本正在通过(即返回零退出状态),并在任何失败时立即停止,这是IPC::System::Simple 的默认行为:

      use IPC::System::Simple qw(systemx);
      
      systemx( 'mytest.t' );  # Run this command successfully or die.
      

      在上述所有示例中,如果您对 shell 参与其中的可能性感到高兴,您可以要求替换 system 命令而不是 systemx。有关详细信息,请参阅IPC::System::Simple 文档。

      还有其他模块可以让您轻松运行命令并捕获其退出值。蒂姆托迪。

      话虽如此,所有好的工具都应该为您检查返回值,因此只有在您编写我们自己的测试测试器时,您才需要自己查看。

      一切顺利,

      保罗

      披露:我编写了 IPC::System::Simple,因此可能对它有一些积极的偏见。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-21
        • 1970-01-01
        • 1970-01-01
        • 2010-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多