在 Perl 中进行单元测试期间提示用户

发布于 2024-12-08 09:01:10 字数 135 浏览 0 评论 0原文

我正在编写一个模块,该模块具有需要运行某个外部服务器程序的单元测试,如果是,则需要知道主机名和端口。

我想在运行测试套件时提示输入此信息,并在用户拒绝提供时跳过这些测试。

处理这个问题的最佳方法是什么?

谢谢

I'm writing a module which has unit tests that require a certain external server program to be running, and, if it is, the hostname and port need to be known.

I would like to prompt for this information when running the test suite, and skip those tests if the user declines to provide it.

What's the best way to handle this?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧街凉风 2024-12-15 09:01:10

您是否在寻找ExtUtils::MakeMaker::prompt

其他方便的功能

提示

my $value = prompt($message);
my $value = prompt($message, $default);

prompt() 函数提供了一种简单的方法来请求用于编写 makefile 的用户输入。它显示 $message 作为输入提示。如果提供了 $default ,它将被用作默认值。该函数返回用户选择的$值。

如果prompt()检测到它没有以交互方式运行并且STDIN上没有任何内容,或者如果PERL_MM_USE_DEFAULT环境变量设置为true,则将使用$default而不提示。这可以防止自动化进程阻塞用户输入。

如果没有提供 $default,将使用空字符串。

Are you looking for ExtUtils::MakeMaker::prompt?

Other Handy Functions

prompt

my $value = prompt($message);
my $value = prompt($message, $default);

The prompt() function provides an easy way to request user input used to write a makefile. It displays the $message as a prompt for input. If a $default is provided it will be used as a default. The function returns the $value selected by the user.

If prompt() detects that it is not running interactively and there is nothing on STDIN or if the PERL_MM_USE_DEFAULT environment variable is set to true, the $default will be used without prompting. This prevents automated processes from blocking on user input.

If no $default is provided an empty string will be used instead.

傲影 2024-12-15 09:01:10

我将对此采取不同的策略。为什么您需要用户作为中间人 - 特别是对于自动化测试?一个明显更好的方法(根据我自己的经验)是执行以下操作之一:

  • 使服务器(主机名/端口)可以通过测试以某种方式发现。它可以是真正的可发现性,或者让服务器自行注册,或者,哎呀,一些配置服务。考虑到现实世界中服务器的客户端需要能够连接到服务器,这样的发现逻辑(同样,最坏的情况是某些配置文件)应该已经存在。

  • 对于真正高级的情况,允许测试工具能够在测试端口上启动服务器的测试实例(如果服务器的测试实例未运行)。

请注意,如果您的服务器由于某种原因无法进行检测以允许上述任何一种方法,那么套接字木偶的答案是最好的方法。

I'll take a different tack on this. Why exactly do you need the user as a middleman for this - especially for automated tests? A significantly better approach (from my own experience) is to do one of the following:

  • Make the server (hostname/port) somehow discoverable by the test. It can be either a genuine discoverability, or having the server register itself, or, heck, some config service. Considering that the server's clients in real world would need to be able to connect to the server, such a discovery logic (again, worst case scenario being some config file) should already exist.

  • For a really advanced case, allow the test harness the ability to start the test instance of a server on a test port if one is not running.

Mind you, if your server for some reason can not be instrumented to allow either of the approaches above, then socket puppet's answer is the best approach.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文