Ant & Jenkins 执行jmx
Windows下 Ant & Jenkins 执行jmx
- ant 下载地址
- 配置环境变量
C:\Users\86158>ant -v
Apache Ant(TM) version 1.9.16 compiled on July 10 2021
Trying the default build file: build.xml
Buildfile: build.xml does not exist!
Build failed
-
将以下文件copy 到ant lib 目录下
-
创建驱动jmx执行文件:build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/>
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="F:\soft\apache-jmeter-5.4.1" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="C:\Users\86158\Desktop\jmx\report\jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="C:\Users\86158\Desktop\jmx\report\html" />
<!-- 生成的报告的前缀-->
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
<target name="run">
<antcall target="test" />
<antcall target="report" />
</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="C:\Users\86158\Desktop\jmx\" includes="01-GET传参.jmx" />
<testplans dir="C:\Users\86158\Desktop\jmx\" includes="02-用户定义的变量案例.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</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-detail-report_21.xsl">
<param name="dateReport" 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>
</project>
- 命令行直接执行ant 执行jmx
C:\Users\86158\Desktop\jmx>ant
Buildfile: C:\Users\86158\Desktop\jmx\build.xml
run:
test:
[jmeter] Executing test plan: C:\Users\86158\Desktop\jmx\01-GET传参.jmx ==> C:\Users\86158\Desktop\jmx\report\jtl\TestReport202207071004.jtl
[jmeter] Creating summariser <summary>
[jmeter] Created the tree successfully using C:\Users\86158\Desktop\jmx\01-GET传参.jmx
[jmeter] Starting standalone test @ Thu Jul 07 22:04:26 CST 2022 (1657202666348)
[jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
[jmeter] summary = 3 in 00:00:01 = 3.5/s Avg: 730 Min: 730 Max: 730 Err: 0 (0.00%)
[jmeter] Tidying up ... @ Thu Jul 07 22:04:27 CST 2022 (1657202667383)
[jmeter] ... end of run
[jmeter] Executing test plan: C:\Users\86158\Desktop\jmx\02-用户定义的变量案例.jmx ==> C:\Users\86158\Desktop\jmx\report\jtl\TestReport202207071004.jtl
[jmeter] Creating summariser <summary>
[jmeter] Created the tree successfully using C:\Users\86158\Desktop\jmx\02-用户定义的变量案例.jmx
[jmeter] Starting standalone test @ Thu Jul 07 22:04:28 CST 2022 (1657202668443)
[jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
[jmeter] summary = 1 in 00:00:01 = 1.5/s Avg: 565 Min: 565 Max: 565 Err: 0 (0.00%)
[jmeter] Tidying up ... @ Thu Jul 07 22:04:29 CST 2022 (1657202669312)
[jmeter] ... end of run
report:
[xslt] Processing C:\Users\86158\Desktop\jmx\report\jtl\TestReport202207071004.jtl to C:\Users\86158\Desktop\jmx\report\html\TestReport202207071004.html
[xslt] Loading stylesheet F:\soft\apache-jmeter-5.4.1\extras\jmeter-results-detail-report_21.xsl
BUILD SUCCESSFUL
Total time: 4 seconds
原生报告:
6.优化报告:
下载模板:
copy 到jmeter 以下目录:
7.修复配置文件:
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=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
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=false
jmeter.save.saveservice.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
- 修改build.xml
遇到的问题:
Ant 运行报错:
D:\Users\win10\Desktop\jmx>ant
Buildfile: D:\Users\win10\Desktop\jmx\build.xml
run:
test:
BUILD FAILED
D:\Users\win10\Desktop\jmx\build.xml:19: The following error occurred while executing this line:
D:\Users\win10\Desktop\jmx\build.xml:25: The <jmeter> type doesn't support nested text data (" ").
解决:
notepad++ 打开build.xml文件,用ANSI编码查看发现有乱码,删除即可
Linux 下 Ant & Jemkins 执行jmx
1.jenkins 环境安装 JDK,Jmeter,Ant
2.jenkins 下载ant插件
2.1
https://plugins.jenkins.io/ 搜索ant
2.2
将下载好的插件手动安装
2.3
重启jenkins:http://192.168.184.150:8888/reload
3.Global Tool Configuration -> Ant
默认是自动安装,不要勾选:
取消勾选后,自己配置
3.1 如果ant_home 没有配置好,jenkins 会报如下异常:
BUILD FAILED
/var/lib/jenkins/workspace/auto_test/build.xml:21: The following error occurred while executing this line:
/var/lib/jenkins/workspace/auto_test/build.xml:26: taskdef class org.programmerplanet.ant.taskdefs.jmeter.JMeterTask cannot be found
** using the classloader AntClassLoader[]**Total time: 0 seconds
Build step 'Invoke Ant' marked build as failure
Finished: FAILURE
4.项目配置
4.1 文件来源
目的:从gitlab服务器拉取jmx脚本到jenkis server: /var/lib/jenkins/workspace 路径下4.2 构建环境
4.3 构建:选择 invoke ant
5.再次构建,发现报错:
BUILD FAILED
/var/lib/jenkins/workspace/auto_test/build.xml:22: The following error occurred while executing this line:
/var/lib/jenkins/workspace/auto_test/build.xml:47: input file /root/test_report/jtl/TestReport202207090911.jtl does not exist
Total time: 0 seconds
Build step 'Invoke Ant' marked build as failure
Finished: FAILURE
原因:保存报告的结果的文件 /root/test_report/jtl/ 的权限不够
6.调整权限后再次构建:
Started by user zhangsan
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/auto_test
The recommended git tool is: NONE
using credential 3d010dc0-2220-4ec1-9a5e-f139c077dce3
> git rev-parse --resolve-git-dir /var/lib/jenkins/workspace/auto_test/.git # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url http://192.168.184.149:82/test_group/autotest.git # timeout=10
Fetching upstream changes from http://192.168.184.149:82/test_group/autotest.git
> git --version # timeout=10
> git --version # 'git version 1.8.3.1'
using GIT_ASKPASS to set credentials gitlab-auth-http
> git fetch --tags --progress http://192.168.184.149:82/test_group/autotest.git +refs/heads/*:refs/remotes/origin/* # timeout=10
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
Checking out Revision 2d34e963b1b09f8ef46c3d9a637e766d60c1ee0c (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f 2d34e963b1b09f8ef46c3d9a637e766d60c1ee0c # timeout=10
Commit message: "update path"
> git rev-list --no-walk bf14c30ee7ddd9cd069e4d0e32ce663687dfc53d # timeout=10
[auto_test] $ /opt/ant/bin/ant -file build.xml run
Buildfile: /var/lib/jenkins/workspace/auto_test/build.xml
run:
test:
[jmeter] Executing test plan: /var/lib/jenkins/workspace/auto_test/01.jmx ==> /root/test_report/jtl/TestReport202207090914.jtl
[jmeter] WARNING: An illegal reflective access operation has occurred
[jmeter] WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/opt/jmeter/lib/xstream-1.4.11.jar) to field java.util.TreeMap.comparator
[jmeter] WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields
[jmeter] WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
[jmeter] WARNING: All illegal access operations will be denied in a future release
[jmeter] Creating summariser <summary>
[jmeter] Created the tree successfully using /var/lib/jenkins/workspace/auto_test/01.jmx
[jmeter] Starting the test @ Sat Jul 09 09:15:01 CST 2022 (1657329301606)
[jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
[jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
[jmeter] summary + 1 in 00:00:01 = 0.9/s Avg: 841 Min: 841 Max: 841 Err: 0 (0.00%) Active: 3 Started: 3 Finished: 0
[jmeter] summary + 2 in 00:00:00 = 64.5/s Avg: 850 Min: 843 Max: 857 Err: 0 (0.00%) Active: 0 Started: 3 Finished: 3
[jmeter] summary = 3 in 00:00:01 = 2.6/s Avg: 847 Min: 841 Max: 857 Err: 0 (0.00%)
[jmeter] Tidying up ... @ Sat Jul 09 09:15:03 CST 2022 (1657329303317)
[jmeter] ... end of run
[jmeter] Executing test plan: /var/lib/jenkins/workspace/auto_test/02.jmx ==> /root/test_report/jtl/TestReport202207090914.jtl
[jmeter] WARNING: An illegal reflective access operation has occurred
[jmeter] WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/opt/jmeter/lib/xstream-1.4.11.jar) to field java.util.TreeMap.comparator
[jmeter] WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields
[jmeter] WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
[jmeter] WARNING: All illegal access operations will be denied in a future release
[jmeter] Creating summariser <summary>
[jmeter] Created the tree successfully using /var/lib/jenkins/workspace/auto_test/02.jmx
[jmeter] Starting the test @ Sat Jul 09 09:15:05 CST 2022 (1657329305799)
[jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
[jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
[jmeter] summary = 1 in 00:00:01 = 1.1/s Avg: 674 Min: 674 Max: 674 Err: 0 (0.00%)
[jmeter] Tidying up ... @ Sat Jul 09 09:15:07 CST 2022 (1657329307265)
[jmeter] ... end of run
report:
[xslt] Processing /root/test_report/jtl/TestReport202207090914.jtl to /root/test_report/html/TestReport202207090914.html
[xslt] Loading stylesheet /opt/jmeter/extras/jmeter.results.shanhe.me.xsl
[copy] Copying 2 files to /root/test_report/html
BUILD SUCCESSFUL
Total time: 9 seconds
Finished: SUCCESS
7.下载插件htmlpublisher.hpi 并安装
- 配置构建后操作 htmlpublisher
htmlpublisher: 详细介绍参考:https://blog.csdn.net/xuecancan/article/details/78810960
- 项目路径下查看 HTML 报告
发现格式丢失:
解决办法:
下载插件:groovy.hpi
增加构建步骤:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
参考:https://blog.csdn.net/weixin_35642637/article/details/118233135
本文来自博客园,作者:chuangzhou,转载请注明原文链接:https://www.cnblogs.com/czzz/p/16456254.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!