2013-05-29 49 views
2

我最近了解了Module :: Starter,並用它爲Web應用程序(各種CGI腳本以及相關模塊)構建了一個框架。能夠通過運行make test來測試我的代碼非常好,但我也想用諸如Test :: WWW :: Mechanize之類的東西來測試CGI腳本。這需要在運行測試之前在某處安裝腳本並配置一個網絡服務器,這似乎是一種粗心大意。分佈式Perl CGI腳本的自動化測試

在分佈中包含像這樣的測試是否有意義?我的感覺是,我應該讓我的模塊儘可能地完成繁重的工作,並讓CGI腳本只是簡單地調用模塊函數,但我測試的主要原因之一是避免了我的CGI中與安全有關的迴歸。

+2

你不需要整個服務器,只需要提供一個基本的CGI接口。標準CGI模塊包括從命令行(即沒有服務器)運行參數時將參數傳遞給腳本的方法。然後,您可以捕獲輸出並將其與您所期望的相匹配。請注意,您也可以安裝* author tests *,這些程序在安裝時不會執行,但僅限於您自己。這對昂貴的測試或迴歸測試很有用。 – amon

+0

@amon除了回答我的主要問題,感謝提及作者測試,我沒有意識到這種能力,它似乎可以派上用場。 – ThisSuitIsBlackNot

+0

@ThisSuitIsBlack沒有看看[測試:: WWW ::機械化:: CGI](https://metacpan.org/module/Test::WWW::Mechanize::CGI) – chansen

回答

2

我不知道你爲什麼說你需要一個網絡服務器。 CGI腳本(用Perl或其他編寫的)只是一個可執行程序,它需要某些輸入和certain environment variables to be set,並向標準輸出寫入HTTP響應。

因此,設計一些設置CGI環境變量,URL編碼輸入以及將輸出與預期結果進行比較的東西。

+0

我看到阿蒙已經表達了同樣的想法。偉大的思想人士相似,而巧合的是,我們也是如此。 – mob

+0

我明顯在想這個。感謝您的簡單和直接的答案。 – ThisSuitIsBlackNot