• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

jmeter+ant搭建使用学习记录

武飞扬头像
鐵馬冰河
帮助3

前提

1、jdk环境已经安装配置好的(我用的1.8.0_192);
2、jmeter已经安装配置好了(我用的5.4.1)。
3、\apache-jmeter-5.4.1\bin下jmeter.properties文件的配置:#jmeter.save.saveservice.output_format=csv ,
修改为jmeter.save.saveservice.output_format=xml,用jmeter生成html报告时使用csv格式;用ant生成html报告时用xml格式
4、\apache-jmeter-5.4.1\bin下jmeter.properties文件的配置:

# The below properties are 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=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=true
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=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=true
jmeter.save.saveservice.bytes=true
# Only available with HttpClient4
jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true
学新通

下载、配置ant

  1. 官网地址https://ant.apache.org/bindownload.cgi
    学新通下载.zip包解压放到任意目录,我放在E:\autoTEST\apache-ant-1.9.16

  2. 给ant配置(和jmeter配置一样的):电脑的属性–>高级系统配置–>环境变量–>系统变量;

    新建 变量名:ANT_HOME 变量值:E:\autoTEST\apache-ant-1.9.16

    在CLASSPATH后面添加:%ANT_HOME%\lib;

    在PATH后面增加1条:%ANT_HOME%\bin

  3. 验证ant安装配置成功没有:
    win R – cmd

    查看版本:ant -version

    如果出现版本信息,说明安装成功:
    Apache Ant™ version 1.9.16 compiled on July 10 2021

jmeter和ant关联配置

  1. 任意路径新建如下文件夹,方便我们查看,build.xml文件新建的:
    学新通
  2. build.xml的配置,参考了网上的很多文章(感谢ღ( ´・ᴗ・` )比心),按我的需求改了下,贴一下:
<?xml version="1.0" encoding="UTF-8"?>

<project name="ant-jmeter-test" default="all" basedir=".">

<tstamp>

<format property="time" pattern="yyyyMMddhhmm" />

</tstamp>

<!-- 需要改成自己本地的 Jmeter 目录 -->

<property name="jmeter.home" value="D:\Downloadsoftware\apache-jmeter-5.4.1" />

<property name="report.title" value="测试报告" />

<!-- jmeter生成jtl格式的结果报告的路径 -->

<property name="jmeter.result.jtl.dir" value="E:\ant_jmeter\JTL" />

<!-- jmeter生成html格式的结果报告的路径 -->

<property name="jmeter.result.html.dir" value="E:\ant_jmeter\HTML" />

<!-- zip文件路径 -->

<property name="zip.dir" value="E:\ant_jmeter" />

<!-- 生成的报告的前缀 -->

<property name="ReportName" value="测试报告前缀" />

<!-- 报告名称 -->

<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />

<!-- 报告模板 -->
<property name="jmeter.resultDetail.htmlName" value="${jmeter.result.html.dir}/${ReportName}Iterface-detail.html" />

<property name="zipname" value="${zip.dir}/${ReportName}${time}.zip" />

<!-- 邮件配置信息 -->
<!-- 按照自己用的邮箱填写 -->
<property name="mail_host" value="邮件服务器主机" />

<property name="mail_port" value="端口号" />

<property name="username" value="邮箱账号" />

<property name="password" value="pwd" />

<!-- 邮件发送人 -->
<property name="mail_from" value="发送人邮箱" />

<!-- 邮件接收人 -->
<property name="mail_to" value="接收人邮箱" />

<!-- 邮件抄送人 -->
<!-- <property name="mail_cc" value="抄送人邮箱" /> -->

<!-- 邮件主题 -->
<property name="mailsubject" value="${report.title},附件为自动化测试报告,如有问题,尽快与测试组联系!" />

<!-- 输出生成的报告名称和存放路径 -->

<echo message="${jmeter.result.jtlName}" />

<echo message="${jmeter.resultDetail.htmlName}" />

<echo message="${jmeter.result.html.dir}" />

<echo message="${zip.dir}" />

<echo message="${zipname}" />

<!-- 加载jar包,解决时间显示问题 -->

<path id="xslt.classpath">

<fileset dir="${jmeter.home}/lib" includes="xalan*.jar" />

<fileset dir="${jmeter.home}/lib" includes="serializer*.jar" />

</path>

<target name="all">

<antcall target="test" />

<antcall target="report" />

<antcall target="zip" />

<!-- 打包zip -->

<antcall target="sendEmail" />

<!-- 发送邮件 -->

</target>

<target name="test">

<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />

<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">

<!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本 -->

<!-- 如果只想执行部分脚本,可以写多条testplans 将需要执行的jmx写在includes中 -->

<testplans dir="E:\ant_jmeter\JMX" includes="*.jmx" />

<!-- 这里就是jmeter.properties修改的部分 -->
<property name="jmeter.save.saveservice.output_format" value="xml" />

</jmeter>

</target>

<target name="report">

<tstamp>

<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" />

</tstamp>

<xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.resultDetail.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_30.xsl">

<param name="Date Report" expression="${report.datestamp}" />

</xslt>

<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->

<copy todir="${jmeter.result.html.dir}">

<fileset dir="${jmeter.home}/extras">

<include name="collapse.png" />

<include name="expand.png" />

</fileset>

</copy>

</target>

<!-- zip配置 -->

<target name="zip">

<echo>

打包zip文件

</echo>

<zip destfile="${zipname}" duplicate="preserve">

<zipfileset dir="${jmeter.result.html.dir}" includes="**/*.*" prefix="测试报告" />

</zip>

<copy todir="${jmeter.result.html.dir}">

<fileset dir="${zip.dir}">

<include name="*.zip" />

</fileset>

</copy>

</target>

<!-- 配置发送邮件报告 -->

<target name="sendEmail">

<echo>

发送测试报告

</echo>

<loadfile property="email_content" srcFile="${jmeter.resultDetail.htmlName}" encoding="UTF-8" />

<!-- 抄送在mail标签里面写cclist="${mail_cc}" -->
<mail mailhost="${mail_host}" ssl="true" user="${username}" password="${password}" mailport="${mail_port}" subject="${mailsubject}" messagemimetype="text/html" messagefileinputencoding="UTF-8" tolist="${mail_to}" >

<from address="${mail_from}" />

<!-- 邮件的内容 -->
<message charset="UTF-8">
测试概要:
${email_content}

</message>

<!-- 附件 -->

<attachments>

<fileset dir="${jmeter.result.html.dir}">
<!-- 意思为该目录下的全部压缩包都作为邮件的附件 -->
<include name="*.zip" />

</fileset>

</attachments>

</mail>

</target>

</project>
学新通
  1. 将\apache-jmeter-5.4.1\extras下面的ant-jmeter-1.1.1的jar包到ant的lib目录
    学新通

  2. maven下载发邮件的3个依赖包

    activation-1.1.1.jar:https://mvnrepository.com/artifact/javax.activation/activation

    commons-email-1.5.jar:https://mvnrepository.com/artifact/org.apache.commons/commons-email

    javax.mail-1.6.2.jar:https://mvnrepository.com/artifact/com.sun.mail/javax.mail

    以下载activation-1.1.1.jar为例:
    学新通 学新通
    把3个包都放在\apache-ant-1.9.16\lib下面:
    学新通

  3. 报告样式文件,我直接用的网上分享发的jmeter-results-detail-report_30.xsl,大家可以去下载,放到\apache-jmeter-5.4.1\extras目录下,贴上大佬链接:https://www.cnblogs.com/jaychang/p/5881525.html

运行一个.jmx试一下

放一个.jmx文件到JMX文件夹下:
学新通
在build.xml文件同路径下cmd:
我这里是E:\ant_jmeter下,ant命令回车,就开始执行:
学新通 如图就是构建成功:
学新通

查看报告

生成报告的位置都是在build.xml里面配置的,在相应的位置查看是否生成:
学新通

学新通
邮件也收到了:
学新通

遇到的问题

问题一:生成的报告左上角日期没有显示当前日期,显示的date not defined

学新通
报告是根据我们上面build.xml配置文件生成的,打开build.xml文件,找到日期相关的部分:

<param name="Date Report" expression="${report.datestamp}" />

而报告样式由"${jmeter.home}/extras/jmeter-results-detail-report_30.xsl"这个样式表负责,所以再打开jmeter-results-detail-report_30.xsl这个文件,找到日期相关的部分,有两个地方:

<xsl:param    name="dateReport" select="'date not defined'"/>
<td align="left">Date report: <xsl:value-of select="$dateReport" /></td>

找了下别的文章讲解,这个xsl文件中的<xsl:param 参数是要build.xml文件传给它的,也就是说参数名称要一致,所以把build.xml文件中改成:

<param name="dateReport" expression="${report.datestamp}" />

再生成报告看下,已经可以显示日期了:

学新通

问题二:概要报告太简单了,需要生成详细接口报告

学新通

1、下载详细接口报告样式,用的网上大佬的,也放到\apache-jmeter-5.4.1\extras目录下jmeter.results.shanhe.me.xsl
2、在build.xml文件里加上生成详细报告,在生成报告的<target里面加上以下代码:

<xslt classpathref="xslt.classpath" 
		force="true" 
		in="${jmeter.result.jtlName}" 
		out="${jmeter.result.html.dir}/detail-report.html" 
		style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">

<!-- 这里是第三方模板,修改jmeter.properties后生成的报告有详细的请求、响应、错误信息等 -->

<param name="dateReport" expression="${report.datestamp}" />

</xslt>

至此,就可以实现jmeter ant的自动执行、生成报告和发送邮件了,剩下的我用着有问题再补充吧~

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhiakhei
系列文章
更多 icon
同类精品
更多 icon
继续加载