我有一個大 Catalyst/PSGI網站的測試套件需要大約40分鐘以上運行。我已經使用Test::Aggregate::Nested將它切換爲使用聚合測試,現在運行需要大約20分鐘以上。如何獲得Test :: WWW :: Mechanize :: PSGI對象的「乾淨」克隆用於聚合測試?
我一直在嘗試讓測試套件在測試之間使用來自WWW::Mechanize的克隆方法來提高性能。
測試之間,我克隆和 「重置」 共享$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 ::機械化。
這樣可以大大減少運行測試所需的時間,並將時間縮短到5分鐘以下。
但是顯然這還不夠:我仍然需要爲特定測試獲得一個新對象,因爲測試之間需要手動獲取新的Test :: WWW :: Mechanize :: PSGI對象的副作用的測試腳本。這爲測試時間增加了幾分鐘的時間。
我認爲測試之間的一個錯誤和neet之間的副作用,在一些測試中得到一個新對象是一個kruge。
所以我的問題是:我還能做些什麼來重置對象的狀態?
Tatsuro Hisamori在YAPC :: EU 2014上進行了一次關於使用分佈式系統運行大型測試套件的演講。這聽起來像是一個可能有意義的例子。我無法找到視頻,但這裏是幻燈片:http://de.slideshare.net/myfinder/yapceurope20mymyfinder – simbabque 2014-10-09 08:33:34
或嘗試forkprove – 2014-10-09 09:06:58
我不想並行運行測試。我正在尋找有關克隆的測試:: WWW :: Mechanize :: PSGI對象中的副作用的信息。 – Rob 2014-10-09 09:15:59