簡體   English   中英

在Perl中進行單元測試時提示用戶

[英]Prompt user during unit test in Perl

我正在編寫一個模塊,它具有單元測試,需要運行某個外部服務器程序,如果是,則需要知道主機名和端口。

我想在運行測試套件時提示輸入此信息,如果用戶拒絕提供測試套件,請跳過這些測試。

處理這個問題的最佳方法是什么?

謝謝

你在尋找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,則將使用空字符串。

我會對此采取不同的措施。 為什么你需要用戶作為中間人 - 特別是對於自動化測試? 一個明顯更好的方法(根據我自己的經驗)是做以下之一:

  • 通過測試使服務器(主機名/端口)以某種方式可被發現。 它既可以是真正的可發現性,也可以是服務器自身注冊,或者是一些配置服務。 考慮到現實世界中服務器的客戶端需要能夠連接到服務器,這樣的發現邏輯(再次,最糟糕的情況是某些配置文件)應該已經存在。

  • 對於非常高級的情況,如果測試端口未運行,則允許測試工具在測試端口上啟動服務器的測試實例。

請注意,如果您的服務器出於某種原因無法通過上述任何一種方法進行檢測,那么socket puppet的答案是最好的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM