一、Jmeter提供ant执行的方式去自定义执行脚本
1、安装jdk,配置环境变量
2、安装ant
配置环境变量
export ANT_HOME=/Users/wuxi/Documents/apache-ant-1.10.1
export PATH=$ANT_HOME/bin:$PATH
jmeter目录结构设计:主要是通过build.xml配置
新建result作为报告输出目录
新建script作为jmx脚本存放路径
build.xml内容如下
<?xml version="1.0"?>
<project name="ant-jmeter" default="all">
<description>
</description>
<!-- Jmeter目录:/Users/wuxi/Documents/apache-jmeter-3.2-->
<property name="jmeter.home" value="${user.dir}"/>
<!-- script目录:/Users/wuxi/Documents/apache-jmeter-3.2/script-->
<property name="script.dir" value="${user.dir}/script"/>
<!-- result目录:/Users/wuxi/Documents/apache-jmeter-3.2/result-->
<property name="result.dir" value="${user.dir}/result"/>
<property name="report.title" value="Test Summary Report"/>
<property name="test" value="Test"/>
<property name="show-data" value="n"/>
<property name="format" value="2.1"/>
<condition property="style_version" value="">
<equals arg1="${format}" arg2="2.0"/>
</condition>
<condition property="style_version" value="_21">
<equals arg1="${format}" arg2="2.1"/>
</condition>
<condition property="funcMode">
<equals arg1="${show-data}" arg2="y"/>
</condition>
<condition property="funcMode" value="false">
<not>
<equals arg1="${show-data}" arg2="y"/>
</not>
</condition>
<path id="jmeter.classpath">
<fileset dir="${basedir}">
<include name="ant-jmeter*.jar"/>
</fileset>
</path>
<taskdef
name="jmeter"
classpathref="jmeter.classpath"
classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
<target name="all" depends="run,report"/>
<target name="run">
<echo>funcMode = ${funcMode}</echo>
<delete file="${result.dir}/${test}.html"/>
<delete file="${result.dir}/${test}.jtl"/>
<jmeter
jmeterhome="${jmeter.home}"
jmeterproperties= "${user.dir}/bin/jmeter.properties"
runremote="false"
resultlog="${result.dir}/${test}.jtl">
<testplans dir="${script.dir}" includes="测试计划_Wireshark.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
<property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/>
</jmeter>
</target>
<!--定义依赖包目录-->
<property name="lib.dir" value="${jmeter.home}/lib"/>
<!-- Use xalan copy from JMeter lib directory to ensure consistent processing with Java 1.4+ -->
<path id="xslt.classpath">
<fileset dir="${lib.dir}" includes="xalan*.jar"/>
<fileset dir="${lib.dir}" includes="serializer*.jar"/>
</path>
<!--定义格式-->
<target name="report" depends="xslt-report,copy-images">
<echo>Report generated at ${report.datestamp}</echo>
</target>
<target name="xslt-report" depends="_message_xalan">
<tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp>
<xslt
classpathref="xslt.classpath"
force="true"
in="${result.dir}/${test}.jtl"
out="${result.dir}/${test}.html"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
<param name="showData" expression="${show-data}"/>
<param name="titleReport" expression="${report.title}"/>
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
</target>
<target name="copy-images" depends="verify-images" unless="samepath">
<copy file ="${jmeter.home}/extras/expand.jpg" tofile="${result.dir}/expand.jpg" />
<copy file ="${jmeter.home}/extras/collapse.jpg" tofile="${result.dir}/collapse.jpg" />
</target>
<!--判断是否相等-->
<target name="verify-images">
<condition property="samepath">
<equals arg1="${jmeter.home}" arg2="${basedir}"/>
</condition>
</target>
<condition property="xalan.present">
<and>
<available classpathref="xslt.classpath" classname="org.apache.xalan.processor.TransformerFactoryImpl"/>
<available classpathref="xslt.classpath" classname="org.apache.xml.serializer.ExtendedContentHandler"/>
</and>
</condition>
<target name="_message_xalan" unless="xalan.present">
<echo>Cannot find all xalan and/or serialiser jars</echo>
<echo>The XSLT formatting may not work correctly.</echo>
<echo>Check you have xalan and serializer jars in ${lib.dir}</echo>
</target>
</project>
jmeter.home目录下新建run.sh:
ant -f /Users/wuxi/Documents/apache-jmeter-3.2/extras/build.xml
执行run.sh执行结果如下
打开result中html文件
参考书籍:全栈性能测试修炼宝典JMeter实战