我正在使用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