LoadRunner下載文件腳本 在看普澤關於pezybase的測試報告的時候,發現里面有用到jmeter(http協議)並發測試下載文件,考慮到后面可能需要在公司pezybase的並發下載,把之前使用過的loadrunner下載文件腳本重新運行和整理一下。 一、http協議 loadrunner使用http協議是無法錄制到下載過程的,只會往服務器發送一個下載請求,其實服務器已經把數據返回給客戶端了,但是loadrunner是錄制不到保存文件到本地這個過程,所以就是需要我們手動把收到的內容保存打本地即可。(http協議上傳文件的完整過程是可以直接錄制的,在UC中已經使用過)。 注意:下面腳本中用到的LR函數如下,還使用了一些C語言基本的文件操作方法。在腳本中還可以加入一些判斷來進行事務是否成功以及文件大小是否正確等的判斷; web_reg_save_param:關聯函數,放在http請求前面,保存請求返回的內容; web_url:http請求函數,向指定的url發送請求,下載文件也就是直接往下載鏈接發送請求; web_get_int_property:獲取下載請求返回的文件長度; web_set_max_html_param_len:設置web_set_max_html_param_len方法中參數的最大長度,要求大於需要下載文件的大小; Action() { int flen;//定義一個整型變量保存獲得文件的大小 long fileContent;//保存文件句柄,也就是文件的內容 char fileName[]="";//保存文件路徑及文件名 char * strNumber; strNumber=lr_eval_string("test{NewParam}");//獲取一個隨機數並轉化成字符串 ,NewParam設置參數為隨機類型,這里根據自己需要進行參數化設置 strcat(fileName,"C:/test/");//將路徑保存到file變量中 strcat(fileName,strNumber); //拼接文件名 strcat(fileName,".pdf");//拼接后綴名,根據需要設置,最后就完成了完整的路徑和文件名 web_set_max_html_param_len("20000");//設置參數的最大長度,注意該值必須大於文件的大小 //使用關聯函數獲取下載文件的內容,在這里不定義左右邊界,獲得服務器響應的所有內容 web_reg_save_param("fcontent", //返回的內容全部存儲在fcontent這個參數中 "LB=", "RB=", "SEARCH=BODY", LAST); lr_start_transaction("下載文件"); #設置的事務開始點 #web_url方法你可以直接編寫,也可以在啟動錄制的時候,輸入下載鏈接URL進行簡單錄制,主要注意URL和Resource這兩個參數即可; web_url("file.php", #函數名,沒有實際作用 "URL=http://forum.ubuntu.org.cn/download/file.php?id=129973&sid=78fc8d76767ef49b606595824ceb963d", #下載鏈接,也就是該鏈接輸入到瀏覽器會提示下載,獲取方法很多; "Resource=1", #1表示是下載資源,0表示是頁面資源 "RecContentType=application/octetstream", "Referer=", "Snapshot=t1.inf", LAST); flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);//獲取響應中的文件長度 if(flen > 0) { //以寫方式打開文件 fileContent = fopen(fileName, "wb"); if(fileContent == NULL) #看是否正確打開了需要保存下載內容的文件,fileName是上面准備組織的文件路徑; { lr_output_message("打開文件失敗!"); return -1; } fwrite(lr_eval_string("{fcontent}"), flen, 1, fileContent);//寫入文件內容 fclose(fileContent);//關閉文件 } lr_end_transaction("下載文件",LR_AUTO);#事務結束點 return 0; }