在腳本的Run-time Settings中,可以設置在腳本運行過程中發生錯誤的處理方式。進入到Run-time Settings中,切換到Miscellaneous標簽頁,可以看到Error Handing的第一個設置項:Continue on error,如圖1-30所示。勾選Continue on error選項後,如果運行過程中發生錯誤,也會繼續執行腳本。
圖1-30 Miscellaneous標簽項
顯然,無論是否勾選Continue on error項,對於一些在Controller中運行的腳本都可能存在問題:勾選後,將會忽略所有函數的執行錯誤,即使一些關鍵業務函數執行發生錯誤也會忽略掉,而遇到這種情況時繼續運行場景顯然已經沒有意義;如果不勾選,一些無關緊要的函數執行時如果發生錯誤將導致當前Vuser停止運行,而當較多Vuser因為小錯誤而停止執行後同樣會導致整個場景的運行結果失去意義,顯然這種情況也不應該發生。
VuGen提供了錯誤處理函數lr_continue_on_error,用來在腳本中實時修改Vuser的出錯設置。lr_continue_on_error函數語法結構如下:
void lr_continue_on_error ( int value );
value是是腳本運行出錯設置的取值,具體取值及相應值的含義如表1-7所示。在使用表1-7中的參數時,既可以使用常量名稱作為參數,也可直接使用對應常量值作為參數。
表1-7
常量名稱
常量值
含義
LR_ON_ERROR_NO_OPTIONS
0
取消出錯繼續執行設置
LR_ON_ERROR_CONTINUE
1
發生錯誤繼續運行腳本
LR_ON_ERROR_SKIP_TO_NEXT_ACTION
2
發生錯誤跳至下個Action運行
LR_ON_ERROR_SKIP_TO_NEXT_ITERATION
3
發生錯誤跳至下一迭代來運行
LR_ON_ERROR_END_VUSER
4
發生錯誤結束當前用戶
lr_continue_on_error調用後將對其後面所有的語句產生影響。因此,腳本中較常用的是lr_continue_on_error (0)與lr_continue_on_error (1)。這兩個語句成對出現,期間包含著需要設置為發生錯誤停止執行的關鍵業務腳本,如例1-71所示。
可以看出,例1-71比較適合壓力較大且在夜間自動運行的測試場景,而這類場景通常會在Run-time Settings中開啟Continue on error選項,因此需要通過lr_continue_on_error (0) 關閉Continue on error選項,使一些關鍵業務發生錯誤停止執行。對於一些非關鍵業務,則需要通過lr_continue_on_error (1)開啟Continue on error選項,這樣即使遇到錯誤也不會影響腳本的繼續執行。
例1-71
Action()
{
……
……
lr_continue_on_error (0); //下面是一些重要事務代碼,因此關閉出錯繼續執行設置
……
……
lr_continue_on_error(1); //後面是一些非關鍵事務代碼,例如下載一些圖片文件,因
//此開啟出錯繼續執行參數設置。
……
……
return 0;
}
反之,如果在Run-time Settings中沒有勾選Continue on error項,則應該通過組合使用lr_continue_on_error (1)與lr_continue_on_error (0)來使一些非關鍵業務發生錯誤後繼續執行。