我正在开发一个使用CGI.pm实现用户交互的Web应用程序。现在我喜欢通过实施单元测试来测试我的更改。这些是我的要求:
到目前为止,我找到了这些软件包:CGI::Test,Test::HTTP,HTTP::WebTest和Test::WWW::Mechanize。
所以我的研究将导致Test :: WWW :: Mechanize。这是正确的方法吗?
提前感谢您的帮助。
答案 0 :(得分:4)
测试:: WWW :: Mechanize是一个很好的方法。
Test :: WWW :: Mechanize是WWW::Mechanize的子类,Test::WWW::Mechanize->new
返回一个LWP::UserAgent子类的对象。因此,如果您阅读并理解这些库的文档,它将对您有所帮助。例如,WWW :: Mechanize文档将向您解释如何提交表单并检索其内容。
以下是测试2位用户同时访问的示例,并说明了如何检查结果(改编自Catalyst testing tutorial):
my $ua1 = Test::WWW::Mechanize->new; # user agent 1, Bud
my $ua2 = Test::WWW::Mechanize->new; # user agent 2, Ace
# Log in as each user
$ua1->get_ok("http://localhost/login?username=Bud&password=xxx", "Login 'Bud'");
$ua2->get_ok("http://localhost/login?username=Ace&password=xxx", "Login 'Ace'");
# Go back to the login page and it should show that we are already logged in
$_->get_ok("http://localhost/login", "Return to '/login'") for $ua1, $ua2;
$_->title_is("Login", "Check for login page") for $ua1, $ua2;
$_->content_contains("Please Note: You are already logged in as ",
"Check we ARE logged in" ) for $ua1, $ua2;
get_ok($ url,$ msg):
检查以确保可以检索$ url。测试失败时显示$ msg。
title_is($ title,$ msg):
检查< title> ...< / title>的内容标签。测试失败时显示$ msg。
content_contains($ content,$ msg):
检查正则表达式$ content是否与html正文中的任何内容匹配。测试失败时显示$ msg。
您可能需要查看Test::WWW::Mechanize::CGI。它允许您在不运行Web服务器的情况下进行测试。
如果您正在寻找示例,WWW::Mechanize::FAQ对您有用。
答案 1 :(得分:3)
我建议将测试分为两部分: