Loading

Jmeter+ant生成HTML测试报告

软件准备

  • JDK: 1.8.0_181
  • Jmeter: apache-jmeter-4.0
  • Ant:apache-ant-1.10.5-bin
  • Jenkins : Jenkins 2.190.2

注意:如果Jenkins是2.17版本,jdk的版本是1.7如果你是在官网上下载最新的Jenkins版本,需要1.8的jdk,否则可能启动Jenkins失败。

 

 

 

JDK\Jmeter\Ant安装

jdk、jmeter安装可以参考教程,这里不详述。

 

JDK 1.8.0 安装教程

 https://jingyan.baidu.com/article/ce09321b85e8d62bff858f93.html

 

Jmeter 4.0 安装教程

https://www.jianshu.com/p/d92519f5f725

最好安装在磁盘根目录下,方便后面使用

 

 

apache-ant-1.10.5-bin 安装教程

解压压缩包到C盘根目录

 

 

配置ant的环境变量

 

    ANT_HOME  D:\apache-ant-1.10.1 

    Path  C:\apache-ant-1.10.5\bin

    CLASSPATH  ;%ANT_HOME%\lib

 

 

 

 

Jmeter与ant配置

将D:\apache-jmeter-4.0\extras文件夹下的ant-jmeter-1.1.1.jar这个jar包复制到D:\apache-ant-1.10.5\lib文件夹下

 

 

 

 

 打开jmeter\bin目录下的 jmeter.properties文件,将 其中内容 :jmeter.save.saveservice.output_format=csv  改成   jmeter.save.saveservice.output_format=xml,记得去掉前面的“#”

 

 

 

从D:\apache-jmeter-4.0\extras 目录下复制文件:build.xml到 C:\apache-ant-1.10.5\bin 目录下

 

 

 

 

 

把代码粘贴到build.xml文档里

 1 <?xml version="1.0" encoding="UTF-8"?>  
 2    
 3 <project name="ant-jmeter-test" default="run" basedir=".">  
 4        
 5     <tstamp>  
 6         <format property="time" pattern="yyyyMMddhhmm" />  
 7     </tstamp>  
 8     <property name="basedirectory" value="D:\apache-jmeter-4.0\extras" />  
 9     <!-- 需要改成自己本地的 Jmeter 目录-->   
10     <property name="jmeter.home" value="D:\apache-jmeter-4.0" />  
11     <!-- jmeter生成jtl格式的结果报告的路径-->  
12     <property name="jmeter.result.jtl.dir" value="C:\Users\Administrator\.jenkins\workspace\jtl" />  
13     <!-- jmeter生成html格式的结果报告的路径--> 
14     <property name="jmeter.result.html.dir" value="C:\Users\Administrator\.jenkins\workspace\html" />  
15     <!-- Name of test (without .jmx) --> 
16     <property name="test" value="Test"/>  
17     <!-- 生成的报告的前缀-->   
18     <property name="ReportName" value="TestReport" />  
19     <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/HC_API_report.jtl" />  
20     <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/HC_API_report.html" />  
21        
22     <path id="xslt.classpath">  
23         <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>  
24         <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>  
25     </path>  
26        
27     <target name="run">  
28         <antcall target="test" />  
29         <antcall target="report" />  
30     </target>  
31        
32     <target name="test">  
33         <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />  
34        
35     <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">  
36              <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本--> 
37             <testplans dir="D:\apache-jmeter-4.0\loadTest" includes="*.jmx" />  
38         </jmeter>  
39     </target>  
40            
41     <target name="report">  
42         <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>  
43         <xslt classpathref="xslt.classpath" 
44               force="true" 
45               in="${jmeter.result.jtlName}" 
46               out="${jmeter.result.htmlName}" 
47               style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">  
48               <param name="dateReport" expression="${report.datestamp}"/>  
49         </xslt>  
50         <copy todir="${jmeter.result.html.dir}">  
51             <fileset dir="${jmeter.home}/extras">  
52                 <include name="collapse.png" />  
53                 <include name="expand.png" />  
54             </fileset>  
55         </copy>  
56     </target>  
57        
58 </project>

根据代码里的提示做符合自己当前需要测试所存放jtl\html报告路径、执行哪些脚本等等

 

进入CMD,切换到C:\apache-ant-1.10.5\bin目录,执行ant

 

 

 

 

 

 

 

 等等

 

 

Jenkins安装

 

安装包下载

官网下载(https://jenkins.io/download/),jenkins.war格式的文件

 

Jenkins安装

找到  jenkins.war 所在路径

下载之后,启动Jenkins就很简单了,在命令行里面进入到Jenkins所在的目录下,然后执行 java -jar jenkins.war启动即可,这种方式在linux、mac、Windows下面全部都好使。

一般放到C盘根目录方便找

 

 2.2、打开CMD,运行java -jar jenkins.war --httpPort=8888

 

 

 

Jenkins配置邮件发送

使用admin用户登录,在Jenkins系统管理中,找到全局设置,在全局设置里面有Jenkins Location,下面有个系统管理员邮件地址,把这个写成刚才创建admin用户时输入的邮箱地址。

然后继续往下找,再找到邮件通知,再点邮件通知下面的高级,这个才是配置发邮件的地方。

 

Jenkins配置

浏览器输入http://localhost:8080/jenkins

tomcat默认端口是8080,如果被占用可以在配置文件自行更改端口号,如果第一次配置jenkins安装默认推荐的插件即可

 

 很简单

 

 进入如下界面,等待其自动完成即可

 

设置管理员账号密码

admin/密码  (要记住密码

 

 

Jenkins配置

 

配置邮件发送

点击 Manage Jenkins

 

 

 

 点击 Configure System

 

 

 填写 Extended E-mail Notification

 

 

填写【邮件通知】

 

 然后点击【保存】

 

Jenkins的使用,核心就是创建一个个的构建任务

创建一个任务

 

构建一个自由风格的项目

 

 

点击【构建触发器】

 

 

选择触发构建时间的设置

构建触发器可以根据自己的需求选择,由图看到有四种类型:

(1)可使用脚本触发远程构建;

(2)其他job构建完成后触发当前job执行构建;

(3)定时周期性构建;

(4)hookplugin检测到源码的push操作就触发构建;

(5)定时检查代码分支是否有变化,如果有变化则执行一次构建。

我的目的是做接口测试自动化,每天定时跑任务并监控API功能是否正常,所以选择Build periodically(定期构建)。日程表一共五个参数:

从左到右分别代表:分 时 天 月 星期

第一个参数代表的是分钟minute,取值0~59;

第二个参数代表的是小时hour,取值0~23;

第三个参数代表的是天day,取值1~31;

第四个参数代表的是月month,取值1~12;

第五个参数代表的是星期week,取值0~7,0和7都代表星期天。

0 7 * * 1,3,5 表示每周一、周三、周五的7点00分执行一次,*代表所有。

 

 

设置【构建环境】

 

配置-构建后【发送邮件】

 

 

 

 

 

 代码

 1 Default Content :  
 2 <!DOCTYPE html>
 3 <html>
 4 <head>
 5 <meta charset="UTF-8">
 6 <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
 7 </head>
 8 
 9 <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
10     offset="0">
11     <table width="95%" cellpadding="0" cellspacing="0"
12         style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
13         <tr>
14             <td>(本邮件是程序自动下发的,请勿回复!)</td>
15         </tr>
16         <tr>
17             <td><h2>
18                     <font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>
19                 </h2></td>
20         </tr>
21         <tr>
22             <td><br />
23             <b><font color="#0B610B">构建信息</font></b>
24             <hr size="2" width="100%" align="center" /></td>
25         </tr>
26         <tr>
27             <td>
28                 <ul>
29                     <li>项目名称&nbsp;:&nbsp;${PROJECT_NAME}</li>
30                     <li>构建编号&nbsp;:&nbsp;第${BUILD_NUMBER}次构建</li>
31                     <li>触发原因:&nbsp;${CAUSE}</li>
32                     <li>构建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
33                     <li>构建&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li>
34                     <li>工作目录&nbsp;:&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
35                     <li>项目&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
36                 </ul>
37             </td>
38         </tr>
39         <tr>
40             <td><b><font color="#0B610B">Changes Since Last
41                         Successful Build:</font></b>
42             <hr size="2" width="100%" align="center" /></td>
43         </tr>
44         <tr>
45             <td>
46                 <ul>
47                     <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
48                 </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}
49             </td>
50         </tr>
51         <tr>
52             <td><b>Failed Test Results</b>
53             <hr size="2" width="100%" align="center" /></td>
54         </tr>
55         <tr>
56             <td><pre
57                     style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
58                 <br /></td>
59         </tr>
60         <tr>
61             <td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>
62             <hr size="2" width="100%" align="center" /></td>
63         </tr>
64         <!-- <tr>
65             <td>Test Logs (if test has ran): <a
66                 href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a>
67                 <br />
68             <br />
69             </td>
70         </tr> -->
71         <tr>
72             <td><pre><textarea cols="80" rows="30" readonly="readonly"
73                     style="font-family: Courier New">${BUILD_LOG, maxLines=100}<pre></textarea>
74             </td>
75         </tr>
76     </table>
77 </body>
78 </html>

 

设置发送邮件触发器

 

 

开始构建

 

点击【build now】开始构建

 

 

 

 

 

 

 

 

 

Linux服务器运行

build.xml

<?xml version="1.0" encoding="utf-8"?>
<project name="pc" default="all" basedir="/data/API-smoke/Api-smoke-Test/">
    <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
    <!-- 需要改成自己本地的 Jmeter 目录-->
    <property name="jmeter.home" value="/opt/apache-jmeter-5.4.1" />
    <!-- jmeter生成jtl格式的结果报告的路径-->
    <property name="jmeter.result.jtl.dir" value="/data/report/CONNECT/API/jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->    
    <property name="jmeter.result.html.dir" value="/data/report/CONNECT/API/report" />
    <!-- 生成的报告的前缀 -->
    <property name="ReportName" value="TestReport" />
  
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${test}${time}.jtl" />
    <!-- 接收测试报告的邮箱 -->
    <property name="mail_from" value="binzi_chen@163.com" />
    <property name="mail_to" value="binzichen@126.com" />
    <!-- 电脑地址 -->
     <!-- <property name="ComputerName" value="jkqsh-l0285" />-->
    <target name="all">
        <antcall target="test" />
        <antcall target="report" />
        <antcall target="send" />
    </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 dir="/data/API-smoke/Api-smoke-Test/Scripts/CONNECT" />
        </jmeter>
    </target>

    <path id="xslt.classpath">
        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
    </path>

    <target name="report">
        <xslt
        classpathref="xslt.classpath"
            force="true"
        in="${jmeter.result.jtlName}" 
        out="${jmeter.result.htmlName}" 
        style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">
            <param name="dateReport" expression="${time}"/>
    </xslt>
        <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
        <copy todir="${jmeter.result.html.dir}">
            <fileset dir="${jmeter.home}/extras">
                <include name="collapse.png" />
                <include name="expand.png" />
            </fileset>
        </copy>
    </target>
</project>

参考:JMeter-JMeter+ant进行接口自动化测试并生成HTML测试报告 - 一步一脚印丶 - 博客园 (cnblogs.com)

 

posted @ 2019-11-17 22:54  Binzichen  阅读(205)  评论(0编辑  收藏  举报