首页 > 其他分享 >Ant发送接口测试报告到邮箱

Ant发送接口测试报告到邮箱

时间:2022-12-27 15:12:25浏览次数:65  
标签:ant 测试报告 发送 Ant jenkins 邮箱 邮件

接口测试完成后生成测试报告的同时通过邮箱发送进行汇报接口测试结果,可以结合jenkins+ant+jmeter配置发送到指定邮箱来完成。

一、jenkins+ant+jmeter的配置

jenkins+ant+jmeter:https://www.cnblogs.com/lc-blogs/p/17006244.html
上篇jenkins+ant+jmeter的持续集成仅完成了生成测试报告,未集成发送到邮件的功能,此篇文章主要在原有的基础上加入了发送测试报告到邮箱的功能。

二、ant发送邮件的配置

  1. ant发送邮件需要依赖几个jar包才能完成发送邮件的功能
    jar包:https://www.aliyundrive.com/s/KC3TqGACTZA 提取码: c9g5
    image
    **把三个jar包下载下来后放到ant的lib目录下

  2. 配置build.xml文件来完成发送邮件的功能,在原有的build.xml文件修改
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
	<tstamp>
		<format property="time" pattern="yyyyMMddHHmm" />
	</tstamp>
	<!-- 需要改成自己本地的Jmeter目录-->
	<property name="jmeter.home" value="D:\apache-jmeter-5.3" />
	<!-- jmeter生成jtl格式的结果报告的路径-->
	<property name="jmeter.result.jtl.dir" value="D:\acan\demo\report\jtl" />
	<!-- jmeter生成html格式的结果报告的路径-->
	<property name="jmeter.result.html.dir" value="D:\acan\demo\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" />
	<!-- 输出生成的报告名称和存放路径-->
	<echo message="${jmeter.result.jtlName}"/>
	<echo message="${jmeter.result.htmlName}"/>
	<echo message="${jmeter.result.html.dir}"/>

	<target name="run">
		<!-- clear删除jtl和html历史文件,test根据jmx文件执行测试,report生成jtl和html文件,sendmail发送邮件-->
		<antcall target="clear"/>
		<antcall target="test"/>
		<antcall target="report"/>
		<antcall target="sendmail"/>
	</target>
	<!-- 指定ant-jmeter-1.1.1.jar 的位置 -->
	<path id="jmeter.classpath">
		<fileset dir="${jmeter.home}/extras">
			<include name="ant-jmeter-1.1.1.jar"/>
		</fileset>

	</path>
	<!--加载jar包,解决显示时间问题-->
	<path id="xslt.classpath">
		<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
		<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
	</path>

	<target name="test">
		<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
		<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
			<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本,比如test*.jmx表示以test开头的所有.jmx文件-->
			<testplans dir="D:\acan\demo" includes="*.jmx" />
			<!-- 声明ant执行jmeter时,传入jmeter的属性值,可以自定义必须是xml格式 -->
			<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.result.htmlName}"
			style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
			<!--jmeter-results-detail-report_21.xsl这里的文件名可以换成你想要的报告效果-->
			<!--显示dateReport的时间-->
			<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>

	<target name="clear">
	<!-- 每次执行前先删除清空jtl和html文件夹,释放空间 -->
		<echo message="释放空间,清空jtl和html文件夹中..."></echo>
		<delete dir="D:\acan\demo\report\html" />
		<delete dir="D:\acan\demo\report\jtl" />
		<!-- 删除单个文件-->
		<delete file="D:\acan\demo\report\testreport.rar" />
		<sleep seconds="2"/>  
		<echo message="释放完成 ..."></echo>
	</target>

	<target name="sendmail">
	<!--把报告进行压缩打包-->
	<jar jarfile="D:\acan\demo\report\testreport.rar" basedir="D:\acan\demo\report\html"/>
	<!--把文件贴到邮件正文-->
	<loadfile property="html" srcFile="${jmeter.result.htmlName}" encoding="UTF-8">
	<filterchain>
		<expandproperties />
	</filterchain>
	</loadfile>

	<mail 
		mailhost="smtp.qq.com" 
		mailport="25"
		subject="xxx项目接口测试报告" 
		messagemimetype="text/html"
		tolist="接收邮箱地址"
		user="发送邮箱地址"
		password="邮箱授权码">
	<from address="发送邮箱地址"/>
	<!--发送附件,dir填写生成的压缩文件地址,name填写生成的压缩文件-->
	<fileset dir="D:\acan\demo\report">
   		<include name="testreport.rar"/>
  	</fileset>
	<message><![CDATA[ 
	<p>xxx项目组收:</p>
	<pre> ${html} </pre>
	<p>自定义邮件内文字</p>
	]]>
	</message>
	</mail>
	</target>
</project>

1)在原来的build.xml文件中新加入了clear和sendmail方法
clear方法用来清除历史的html和jtl文件
sendmail方法通过邮件发送测试报告
注:clear方法要写在最前,先清除历史数据再执行测试,如果写在下方会把所有执行测试生成的数据全部删除,sendmail方法放到最后

image


①以下是删除历史的html和jtl文件的脚本

image


②以下是发送邮件部分的脚本
邮箱授权码参考:https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

image


完整的build.xml文档

image

三、执行ant命令发送邮件

在创建的存放测试报告和jmx文件的路径打开cmd窗口

image


见到如下图,BUILD SUCCESSFUL表示成功

image


收到的邮件,如下图

image


四、jenkins构建结果

使用ant执行能够正常收到邮件,jenkins不需要做任何的修改,直接构建

image


jenkins的控制台查看构建结果

image

标签:ant,测试报告,发送,Ant,jenkins,邮箱,邮件
From: https://www.cnblogs.com/lc-blogs/p/17008108.html

相关文章

  • 'parent.relativePath' of POM com.qbb:log_record_elegant:1.0-SNAPSHOT points at
    完整的错误:'parent.relativePath'ofPOMcom.qbb:log_record_elegant:1.0-SNAPSHOT(F:\QbbCode\qiu_code\log_record_elegant\pom.xml)pointsatcom.qbb:qiu_codein......
  • ReentrantReadWriteLock读写锁和StampedLock邮戳锁
    ReentrantReadWriteLock读写锁定义:一个资源能够被多个读线程访问,或者被一个写线程访问,但是不能同时存在读写线程,只有在读多写少的情况下,读写锁才有较高的性能体现。缺点......
  • Selenium28-测试报告
    批量运行为什么要批量运行?测试用例数量庞大,需要一次运行,查看所有用例的运行结果。什么是测试套件和测试运行器?TestSuite(测试套件)是为了测试执行而分组的测试用例......
  • Java同步器之ReentrantLock源码分析(一)
    一、概述ReentrantLock是Java并发包中提供的一个可重入的互斥锁。ReentrantLock和synchronized在基本用法,行为语义上都是类似的,同样都具有可重入性。只不过相比原生的Syn......
  • jmeter+ant+jenkins接口自动化持续集成
    JMETER+ANT+JENKINS接口自动化持续集成一、在win10环境下安装jdk、jmeter、ant、jenkinsjdk安装参考:https://www.cnblogs.com/lc-blogs/p/17005044.htmljmeter安装参......
  • 液体眼线笔BCOP测试报告
    什么产品需要这个认证呢?像接触眼睛外贸论坛外贸论坛的眼影,液体眼线笔,磁性睫毛,假睫毛,等都可能会对眼睛产生eBay论坛eBay论坛一定外贸论坛外贸论坛的刺激,所以亚马逊现在也在严......
  • el-input输入框只能输入中文,英文,邮箱,手机号
    1.设置限制只能输入中文校验中文的正则:/^[\u4e00-\u9fa5]+$/rules:{chineseName:[{required:true,message:"请输入中文名",trigger:"blur"},{......
  • 亚马逊儿童围栏ASTMF406测试报告CPSIA测试
    亚马逊美国CPC认证儿童安全围栏ASTMF406检测标准CPC认证就是儿童产品安全证书(Children’sProductCertificate,CPC)适用于所有以12岁及以下儿童为主要目标使用对象的产品,......
  • 基于 Ant Design Vue实现tree的增删改
    背景:在维护的项目是基于AntDesignVue框架实现的,需求是新建时,前端需要将树形结构维护完成后,一次性调用接口进行下发,在网上找了半天资料,要不源码不全,要不就是增删改后实......
  • ReentrantLock Condition await signal 专题
     Condition的执行方式,是当在线程T1中调用await方法后,线程T1将释放锁,并且将自己阻塞,等待唤醒,线程T2获取到锁后,开始做事,完毕后,调用Condition的signal方法,唤醒线程T1,在t2执行......