JMeter 系列之—-05 支持CI扩展

思路

  1. 配置Jenkins,设置入参(jmx_name,JthreadNum,JtestTime),设置ant触发测试执行
  2. 新建build.xml文件,组织测试执行,其中用到步骤1中设置的参数;
  3. Jmeter脚本中配置使用这些外部变量
  4. 将Jmeter脚本文件上传到svn对应目录,Jenkins触发测试执行

实现

1. Jenkins配置

设置入参
-jmx_name
-thread_num=50
-test_time=120

设置ant触发测试执行

2. Ant配置--build.xml文件

<?xml version="1.0" encoding="utf-8"?>
<project name="jmeter_test" default="run" basedir="."> 
	<tstamp> 
		<format property="time" pattern="yyyyMMddhhmm"/> 
	</tstamp>  
	<!-- 需要改成自己本地的 Jmeter 目录-->  
	<property name="jmeter.home" value="D:javaapache-jmeter-5.2.1"/>  
	<!-- 生成的报告的前缀 -->  
	<property name="JobName" value="${jobName}"/>
	<!-- jmeter生成jtl格式的结果报告的路径-->  
	<property name="jmeter.space.dir" value="D:javaapache-jmeter-space/${JobName}_${time}/"/>  
	<property name="jmeter.result.jtlName"  value="${jmeter.space.dir}/${JobName}.jtl"/>  
	<property name="jmeter.result.htmlName" value="${jmeter.space.dir}/${JobName}.html"/> 
	<target name="run" depends="test,report"/>

	<target name="test"> 
		<copy todir="${jmeter.space.dir}/script"> 
			<fileset dir="script"> 
				<include name="${JobName}.jmx"/>  
			</fileset> 
		</copy> 
		<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>  
		<jmeter 
			jmeterhome ="${jmeter.home}" 
			testplan ="${jmeter.space.dir}/script/${JobName}.jmx"  
			resultlog ="${jmeter.result.jtlName}"> 
			<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本 -->  
			<property name="jmeter.save.saveservice.output_format" value="xml"/> 
			<jmeterarg value="-JthreadCount=${threadNum}" />
			<jmeterarg value="-Jduration=${randmpUp}" />
			<!-- 加入jmeter的参数,这样可以根据需要生成jmeter的CSV报告,需要设置 jmeter.save.saveservice.output_format的value=csv
      <jmeterarg value="-e" />
      <jmeterarg value="-o${jmeter.space.dir}" />
      -->
		</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"> 
		<tstamp>
			<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/>
		</tstamp>  
		<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.space.dir}/"> 
			<fileset dir="${jmeter.home}/extras"> 
				<include name="collapse.png"/>  
				<include name="expand.png"/> 
			</fileset> 
		</copy> 
				<!-- 手动拷贝 -->  
		<copy todir=""> 
			<fileset dir="${jmeter.space.dir}"> 
				<exclude name="script"/>  
			</fileset> 
		</copy> 
	</target> 
</project>

3. Jmeter配置--脚本中使用外部变量

{__P(,)}函数用于接收系统传递的参数,格式为:{__P(外部变量名,默认值)}。

  1. 上传脚本测试执行
    控制台输出

原文地址:https://www.cnblogs.com/liuyitan/p/13051099.html