我有一个用于 Catalyst/PSGI 网站的大型测试套件,运行大约需要 40 多分钟。我已将其切换为使用聚合测试,使用Test::Aggregate::Nested,现在运行大约需要 20 多分钟。
我一直在尝试让测试套件在测试之间使用WWW::Mechanize中的 clone 方法来提高性能。
在测试之间,我正在克隆和“重置”共享$mech
对象,如下所示:
if ($orig) {
$mech = $orig->clone();
$mech->max_redirect(7);
$mech->cookie_jar->clear;
} else {
$orig = Test::WWW::Mechanize::PSGI->new( app => $app );
}
请注意,Test::WWW::Mechanize::PSGI扩展了 WWW::Mechanize。
这大大减少了运行测试所需的时间,不到 5 分钟。
但显然这还不够:我仍然需要为特定测试获取一个新对象,因为测试之间的副作用需要在某些测试脚本中手动获取一个新的 Test::WWW::Mechanize::PSGI 对象. 这又增加了几分钟的测试时间。
我认为测试之间的副作用是一个错误,并且在某些测试中获得一个新对象的需要是一个 kluge。
所以我的问题是:我还能做些什么来重置对象的状态?