我正在使用CPAN的Test
模塊編寫測試腳本。我希望腳本測試以查看我的程序是否加載了URI :: URL包。這可能嗎?編寫測試以確保Perl腳本加載特定模塊
回答
如果我正確理解你,你想檢查一段代碼是否加載某個模塊。
你可以通過運行一段代碼,然後檢查%INC
算賬:
# run your script (e.g. via 'do' or 'require')
# ...
ok $INC{'URI/URL.pm'}, "URI::URL was loaded";
這可能是更好地使用該模塊Module::Loaded
,而不是分析%INC
的。從perl 5.9.4開始它是一個核心模塊。
http://perldoc.perl.org/Module/Loaded.html
use Module::Loaded;
if (is_loaded('URI::URL')) {
print "Is loaded\n";
} else {
print "Is NOT loaded\n";
}
希望能解決你的問題。
這在此上下文中正常工作,但要注意:在列表上下文中,「is_loaded」在失敗(而不是false)時不返回任何內容(空列表)。這種奇怪的行爲是沒有記錄的,可以讓你絆倒你:'foo(is_loaded(「Weird :: Stuff」))'實際上沒有參數地調用'foo()'。 – melpomene
@zdim在你做類似'my%hash =(foo => 1,bar => is_loaded($ module),baz => 2)'然後'is_loaded'突然返回一個空列表並且您的後續密鑰成爲值,反之亦然。然後,您的bugzilla或CGI代碼中會出現安全漏洞(請參閱臭名昭着的「Perl Jam」討論)。那裏的罪魁禍首是'$ cgi-> param()',至少有文件記錄返回一個列表! – melpomene
@zdim不,如果'is_loaded'總是返回一個標量(包括'undef'),一切都很好。 – melpomene
- 1. 針對Perl測試腳本的操作系統特定測試
- 2. 你推薦在cgi腳本中用Perl編寫xmlrpc模塊?
- 3. 如何編寫單元測試用例Perl腳本
- 4. Perl和編譯時模塊加載
- 5. 在運行時加載腳本並確保加載腳本
- 6. Perl腳本錯誤:無法加載模塊DBI
- 7. 在perl腳本中插入rsh和模塊加載
- 8. Android Studio編寫測試腳本
- 9. 如何編寫junit測試腳本?
- 10. openshift perl模塊加載
- 11. 動態加載Perl模塊
- 12. 確保模塊只在Guice中加載
- 13. 確保requireJS條件模塊已加載
- 14. 寫makefile編譯特定模塊
- 15. 如何編寫測試用例以確保線程安全
- 16. 測試重寫模塊
- 17. Angular2測試,SystemJS無法加載模塊
- 18. 保存重新加載的Python模塊用於測試目的
- 19. 如何編寫腳本以保持重試Yum更新程序?
- 20. soapUI加載測試腳本未終止
- 21. Python腳本加載測試網頁
- 22. 用於加載測試的腳本JavaScript
- 23. 如何猜測一個特定的腳本寫入的最小Perl版本?
- 24. 如何編寫單元測試以確保輸出在一定範圍內?
- 25. 哪個perl模塊用於寫硒測試?
- 26. 如何在測試廚房編寫平臺特定的測試?
- 27. 如何確定特定perl模塊的包?
- 28. 確定,是模塊名已經定義,沒有加載模塊
- 29. 從特定位置加載模塊(magento)
- 30. Robolectric 3:加載測試特定資源
Test :: More has ['use_ok'](https://metacpan.org/pod/Test::More#Module-tests)and'require_ok' ...是否有任何特殊原因您正在使用Test .pm而不是Test :: More?測試::更多是非常標準的。 – ThisSuitIsBlackNot
我正在使用'Test :: More'。我確實嘗試過這些測試,但他們似乎只看到我的測試腳本是否可以加載軟件包。我想測試從另一個文件運行的目標腳本是否正在加載軟件包。 – StevieD