2017-05-30 66 views
1

我試圖在nongui模式下運行我的測試用例。JMeter在非GUI模式下爲每個採樣器創建自定義.jtl日誌

這裏是我的測試計劃

testplan

和BeanShell的代碼

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.net.URLDecoder; 

import org.apache.jmeter.services.FileServer; 

String samplerNumber = "${__threadNum}"; 
String samplerName = "${__samplerName()}"; 

if(sampleEvent.getResult() instanceof org.apache.jmeter.protocol.http.sampler.HTTPSampleResult) { 
    String request = (sampleEvent.getResult().getSamplerData()); 
    String response = prev.getResponseDataAsString(); 
    String url = java.net.URLDecoder.decode(request, "UTF-8"); 


    f = new FileOutputStream("D:/testScripts/logs/" + samplerName + ".log", true); 
    p = new PrintStream(f); 

    p.println("sample time: " + prev.getTime() 
    + " Thread: " + samplerNumber 
    + ", sampler name: " + samplerName 
    + ", system time: " + new Date() 
    + " \nREQUEST: " + url); 

    p.close(); 
    f.close(); 
} 

基本上它是寫爲每個HTTP採樣我有一個.log文件和日誌什麼的線程,採樣器名稱,系統時間和請求的URL。

取而代之的是,我很想創建一個.jtl文件,我稍後可以將它讀入一個監聽器(例如圖形)並查看每個採樣器本身的結果。

有沒有一種方法可以修改腳本來達到目的?

回答

0

你基本上不需要這個監聽器,默認情況下,JMeter將所有這些信息存儲在它的.jtl結果文件中。通過-J command-line argument

jmeter.save.saveservice.url=true 

或通過它像:如果您需要保存URL只是在下一行添加到user.properties文件

jmeter -Jjmeter.save.saveservice.url=true -n -t test.jmx -l result.csv 

如果你還想做這從代碼,它必須生成有效的CSV匹配保存服務配置,具有以下屬性:

# legitimate values: xml, csv, db. Only xml and csv are currently supported. 
#jmeter.save.saveservice.output_format=csv 


# true when field should be saved; false otherwise 

# assertion_results_failure_message only affects CSV output 
#jmeter.save.saveservice.assertion_results_failure_message=true 
# 
# legitimate values: none, first, all 
#jmeter.save.saveservice.assertion_results=none 
# 
#jmeter.save.saveservice.data_type=true 
#jmeter.save.saveservice.label=true 
#jmeter.save.saveservice.response_code=true 
# response_data is not currently supported for CSV output 
#jmeter.save.saveservice.response_data=false 
# Save ResponseData for failed samples 
#jmeter.save.saveservice.response_data.on_error=false 
#jmeter.save.saveservice.response_message=true 
#jmeter.save.saveservice.successful=true 
#jmeter.save.saveservice.thread_name=true 
#jmeter.save.saveservice.time=true 
#jmeter.save.saveservice.subresults=true 
#jmeter.save.saveservice.assertions=true 
#jmeter.save.saveservice.latency=true 
# Only available with HttpClient4 
#jmeter.save.saveservice.connect_time=true 
#jmeter.save.saveservice.samplerData=false 
#jmeter.save.saveservice.responseHeaders=false 
#jmeter.save.saveservice.requestHeaders=false 
#jmeter.save.saveservice.encoding=false 
#jmeter.save.saveservice.bytes=true 
# Only available with HttpClient4 
#jmeter.save.saveservice.sent_bytes=true 
#jmeter.save.saveservice.url=false 
#jmeter.save.saveservice.filename=false 
#jmeter.save.saveservice.hostname=false 
#jmeter.save.saveservice.thread_counts=true 
#jmeter.save.saveservice.sample_count=false 
#jmeter.save.saveservice.idle_time=true 

# Timestamp format - this only affects CSV output files 
# legitimate values: none, ms, or a format suitable for SimpleDateFormat 
#jmeter.save.saveservice.timestamp_format=ms 

您可能需要生成標題行以及其需要與像

timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect 
1496132228865,336,HTTP Request,200,OK,Thread Group 1-1,text,true,,1576,115,1,1,http://example.com/,336,0,174 

列此外,它會好得多使用JSR223 Listener and Groovy語言代替的BeanShell在這種情況下性能會更高和資源消耗更低。

請參閱Apache JMeter Properties Customization Guide瞭解更多關於JMeter屬性以及設置和覆蓋它們的方法