簡體   English   中英

Perl 輔助回歸測試

[英]Perl aids for regression testing

是否有 Perl 模塊允許我查看程序(或函數)的實際和參考 output 之間的差異? 如果存在差異,則測試失敗。

此外,如果存在差異,但 output 可以(因為功能已更改),我希望能夠提交實際的 output 作為未來參考 Z78E6221F6393D1356681DB398F14CED6

Perl 具有出色的測試實用程序。 最常用的模塊可能是 Test::More,它提供了編寫回歸測試可能需要的所有基礎設施。 證明實用程序為運行測試套件和總結結果提供了一個簡單的界面。 Test::Differences 模塊(可與 Test::More 一起使用)也可能對您有用。 它將差異格式化為並排比較。 至於提交實際的 output 作為新的參考資料,這將取決於您的被測代碼如何提供 output 以及您如何捕獲它。 如果您寫入文件然后比較它們應該很容易。 如果是這種情況,您可能希望在測試套件中使用 Text::Diff 模塊。

如前所述,Test::Differences 是完成此任務的標准方法之一,但我需要提及 PerlUnit:請不要使用它。 它是“廢棄軟件”,不與標准 Perl 測試工具集成。 因此,對於所有出現的新測試模塊,如果您想使用它們,就必須移植它們的功能。 (如果有人負責這個廢棄模塊的維護,請給我留言。我需要與他們交談,因為我維護核心測試工具,我想幫助與 PerlUnit 集成)。

免責聲明:雖然 Id 沒有寫它,但我目前維護 Test::Differences,所以我可能有偏見。

我傾向於使用更多的 Test::Simple 和 Test::More 功能。 我查看了 PerlUnit,它似乎提供了許多已經內置在標准庫中的功能,包括 Test::Simple 和 Test::More 庫。

我質疑那些推薦使用 PerlUnit 的人。 它已經3年沒有發布了。 如果您真的想要 xUnit 風格的測試,請查看Test::Class ,它可以完成相同的工作,但以更加 Perlish 的方式。 它仍然被維護並定期發布的事實也沒有受到傷害。

只要確保它對您的項目有意義。 也許你所需要的只是舊的Test::More (它通常適合我)。 我建議閱讀文檔中的“為什么你應該 [不] 使用 Test::Class ”部分。

為了測試程序的 output,有Test::Command 它允許輕松驗證程序的標准輸出和標准錯誤(以及退出值)。 例如:

use Test::Command tests => 3;

my $echo_test = Test::Command->new( cmd => 'echo out' );

$echo_test->exit_is_num(0, 'exit normally');
$echo_test->stdout_is_eq("out\n", 'echoes out');
$echo_test->stderr_unlike( qr/something went (wrong|bad)/, 'nothing went bad' )

該模塊也有一個功能接口,如果它更符合您的喜好。

社區標准的主力是 Test::Simple(用於開始測試)和 Test::More(一旦你想要的不僅僅是 Test::Simple 可以為你做的)。 兩者都是圍繞預期與實際 output 的概念構建的,並且兩者都會在它們發生時向您顯示差異。 這些模塊的 perldoc 將助您一臂之力。

您可能還想查看Perl QA wiki ,如果您真的對 perl 測試感興趣,perl-qa 郵件列表可能值得研究——盡管它通常更多的是關於為 Z01144EF361A398F748 創建測試系統語言中的系統。

最后,使用 module-starter 工具(來自 Module::Starter)將為您提供一個非常好的“CPAN 標准”布局,用於新工作——或將現有代碼放入其中——包括現成的測試工具設置。

暫無
暫無

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

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