jmeter 脚本执行的命令:
jmeter - n - t / jmxpath/ abc. jmx - l / resultpath/ res. jtl
java代码以shell方式执行jmeter命令
public void exeShell ( String sourcePath, String resultPath) {
Process process = null;
String commond = "jmeter -n -t " + sourcePath+ " -l " + resultPath;
try {
process = Runtime. getRuntime ( ) . exec ( commond) ;
try {
int status = process. waitFor ( ) ;
if ( status!= 0 ) {
System. err. println ( "Failed to call shell's command and the return status's is: " + status) ;
}
} catch ( InterruptedException e) {
e. printStackTrace ( ) ;
}
} catch ( IOException e) {
e. printStackTrace ( ) ;
}
}
获取jmeter脚本执行结果的内容
public String getJmeterResultFile ( String resultPath, String resultFileName) throws IOException {
File file = FileUtils. getFile ( resultPath, resultFileName) ;
StringBuffer sb= new StringBuffer ( ) ;
FileReader fileReader = new FileReader ( file) ;
BufferedReader bufferedReader = new BufferedReader ( fileReader) ;
LineNumberReader reader = new LineNumberReader ( bufferedReader) ;
String line;
while ( ( line = reader. readLine ( ) ) != null) {
sb. append ( line) . append ( System. getProperty ( "line.separator" ) ) ;
}
reader. close ( ) ;
String content = sb. toString ( ) ;
return content;
}
解析jtl 结果文件,分析断言,判断此次执行是否成功
private List< Map< String, Object> > getAssertContent ( String content) {
List< Map< String, Object> > list= new ArrayList < Map< String, Object> > ( ) ;
if ( StringUtils. isNotBlank ( content) ) {
SAXReader reader = new SAXReader ( ) ;
Document document = null;
try {
document = DocumentHelper. parseText ( content) ;
} catch ( DocumentException e) {
e. printStackTrace ( ) ;
}
if ( null != document) {
Element rootElement = document. getRootElement ( ) ;
Iterator iterator = rootElement. elementIterator ( ) ;
while ( iterator. hasNext ( ) ) {
Element stu = ( Element) iterator. next ( ) ;
Iterator iterator1 = stu. elementIterator ( ) ;
while ( iterator1. hasNext ( ) ) {
Element stuChild = ( Element) iterator1. next ( ) ;
if ( "assertionResult" . equals ( stuChild. getName ( ) ) ) {
Map< String, Object> map = new HashMap < String, Object> ( ) ;
Iterator iterator2 = stuChild. elementIterator ( ) ;
while ( iterator2. hasNext ( ) ) {
Element obj = ( Element) iterator2. next ( ) ;
map. put ( obj. getName ( ) , obj. getStringValue ( ) ) ;
}
String failure = map. get ( "failure" ) . toString ( ) ;
String error = map. get ( "error" ) . toString ( ) ;
if ( "false" . equals ( failure) && "false" . equals ( error) ) {
map. put ( "isSuccess" , "true" ) ;
} else {
map. put ( "isSuccess" , "false" ) ;
}
list. add ( map) ;
}
}
}
}
}
return list;
}
private boolean getTestState ( List< Map< String, Object> > assertDataList) {
boolean flag = true ;
if ( assertDataList. size ( ) > 0 ) {
for ( Map< String, Object> obj : assertDataList) {
String isSuccess = String. valueOf ( obj. get ( "isSuccess" ) ) ;
if ( StringUtils. isNotBlank ( isSuccess) && "false" . equals ( isSuccess) ) {
flag= false ;
break ;
}
}
}
return flag;
}