通过gitlab的cicd实现jmeter脚本自动构建和执行
首先,在gitlab上创建一个放jmeter脚本的项目
新建项目1 新建项目2通过git bash命令行执行以下对应的操作
git文件的推送方式-在新建项目后,git会默认展示该提示需要导入的文件有:ant安装包、jmeter安装包、一个存放jmeter脚本的文件夹jmeter-script、一个存放测试报告的文件夹test-report、一个gitignore文件、一个gitlab-ci.yml文件
文件导入成功gitignore文件的配置内容如下:
.classpathtarget/**.factorypath.settings/**.idea/**.project/***.iml
yml文件的配置如下:
stages:-jmetercache:paths:-.m2/Jmeter:stage:jmeterimage:docker.xxxx.cn/infra/java-1.0-ci-1.0script:-echo 1-chmod 777 -R apache-ant-1.10.7/bin/ant-apache-ant-1.10.7/bin/ant -f jmeter-script/build.xmltags:-base-runner
yml文件(可以分多个stages,代表不同的步骤,组成git中的一组任务)build.xml文件设置如下:
<?xml version="1.0" encoding="UTF8"?><projectname="ant-jmeter"default="all"basedir="."><propertyname="jmeterPath"value="../apache-jmeter-2.12"/><propertyname="mail_host"value="smtp.exmail.qq.com"/><propertyname="mail_port"value="465"/><propertyname="username"value="xxxx@xxxx.cn"/><propertyname="password"value="xxxxxx"/><propertyname="mail_from"value="xxxx@xxxx.cn"/><propertyname="mail_to"value="xxxx@xxxx.cn,competition-backend@xxxx.cn"/><propertyname="mailsubject"value="xx自动化测试报告"/><propertyname="message"value="测试报告"/> <tstamp><formatproperty="time"pattern="yyyyMMddhhmm"/></tstamp> <!-- jmeter环境配置 --><propertyname="jmeter.home"value="${jmeterPath}"/><!-- jtl测试结果存放路径 --><propertyname="jmeter.result.jtl.dir"value="../test-report/jtl"/><!-- html测试结果存放路径 --><propertyname="jmeter.result.html.dir"value="../test-report/html"/><propertyname="htmlReportNameSummary"value="TestReport"/><propertyname="jmeter.result.jtlName"value="${jmeter.result.jtl.dir}/${htmlReportNameSummary}${time}.jtl"/><propertyname="jmeter.result.htmlName"value="${jmeter.result.html.dir}/${htmlReportNameSummary}${time}.html"/><targetname="all"><antcalltarget="test"/><antcalltarget="report"/><antcalltarget="sendEmail"/></target> <!-- 执行接口测试 --><targetname="test"><echo>执行接口自动化测试用例</echo><taskdefname="jmeter"classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/><jmeterjmeterhome="${jmeter.home}"resultlog="${jmeter.result.jtlName}"><testplansdir="./"includes="*.jmx"/><!-- <testplans dir="./BS小程序/" includes="*.jmx" /> 存放在文件夹中的示例--><propertyname="jmeter.save.saveservice.output_format"value="xml"/></jmeter></target> <!-- 解决报告中NAN字段显示问题--><pathid="xslt.classpath"><filesetdir="${jmeter.home}/lib"includes="xalan-2.7.2.jar"/><filesetdir="${jmeter.home}/lib"includes="serializer-2.7.2.jar"/></path> <targetname="report"><echo>生成接口自动化测试报告</echo><tstamp><formatproperty="report.datestamp"pattern="yyyy/MM/dd HH:mm"/></tstamp><xsltclasspathref="xslt.classpath"force="true"in="${jmeter.result.jtlName}"out="${jmeter.result.htmlName}"style ="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"><paramname="titleReport"expression="${mailsubject}"/><paramname="dateReport"expression="${report.datestamp}"/></xslt> <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --><copyfile="${jmeter.home}/extras/expand.png"tofile="${jmeter.result.html.dir}/expand.png"/><copyfile="${jmeter.home}/extras/collapse.png"tofile="${jmeter.result.html.dir}/collapse.png"/> </target> <targetname="sendEmail"><echo>发送测试报告</echo><loadfileproperty="email_content"srcFile="${jmeter.result.htmlName}"/> <mailmailhost="${mail_host}"messagefile="${jmeter.result.htmlName}"ssl="true"user="${username}"password="${password}"mailport="${mail_port}"subject="${mailsubject}"messagemimetype="text/html"messagefileinputencoding="UTF-8"tolist="${mail_to}"charset="UTF-8"><fromaddress="${mail_from}"/> <attachments><filesetdir="${jmeter.result.html.dir}"><includename="${htmlReportNameSummary}${time}.html"/><!-- <include name="collapse.png" /> <include name="expand.png" /> --></fileset></attachments> </mail></target></project>
1 2 3 测试报告邮件