持续集成 Jenkins+maven+jmeter 接口可持续集成自动化测试

小蜜蜂 · June 14, 2017 · Last by 小蜜蜂 replied at February 10, 2019 · 8075 hits

说到接口我们都能想到jmeter这个工具,但是我们如何借助jenkins来做可持续集成自动化的测试呢?下面就是我对jenkins、maven、jmeter做的可持续化集成环境搭建的学习心得。

一,jmeter脚本录制

这一步就是录制Jmeter脚本,确保脚本能正确运行。

二,建立一个maven工程

1,打开eclipse,点击File->New->Project->Maven Project

2,创建maven工程后,在工程目录下新建所需的文件夹

--Src/test/resources --存放报告模板文件
--src/main/

--src/test/jmeter --存放jmeter脚本文件跟一些接口调用的参数
--target/jmeter/bin --target存放结果的根目录
--target/jmeter/html
--target/jmeter/html1
--target/jmeter/lib
--target/jmeter/logs
--target/jmeter/results
--target/maven-archiver
--target/surefire

3,编辑pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>testDemo</groupId>
<artifactId>bluemoon</artifactId>
<version>1.11</version>
<name>bluemoon Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.13</version>
</dependency>
<!-- <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_jdbc</artifactId>
<version>2.11</version> </dependency> <dependency> <groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId> <version>10.2.0.5</version> </dependency> -->
<!-- MySql 5.5 Connector -->
</dependencies>
<properties>
<jmeter.result.jtl.dir>${project.build.directory}\jmeter\results</jmeter.result.jtl.dir>
<jmeter.result.html.dir>${project.build.directory}\jmeter\html</jmeter.result.html.dir>
<jmeter.result.html.dir1>${project.build.directory}\jmeter\html1</jmeter.result.html.dir1>
<ReportName>TestReport</ReportName>
</properties>
<pluginRepositories>
<pluginRepository>
<id>Codehaus repository</id>
<url>http://repository.codehaus.org/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
<build>
<finalName>bluemoon</finalName>
<plugins>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>1.10.0</version>
<configuration>
<resultsFileFormat>xml</resultsFileFormat>
<ignoreResultFailures>true</ignoreResultFailures>
<testResultsTimestamp>flase</testResultsTimestamp>
</configuration>
<executions>
<execution>
<id>test</id>
<phase>verify</phase>
<goals>
<goal>jmeter</goal>
</goals>
<!-- <configuration> <resultsFileFormat>csv</resultsFileFormat> </configuration> -->
</execution>
</executions>
</plugin>
<!-- <plugin> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_jdbc</artifactId>
<version>2.11</version> </plugin> -->

<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>src\test\jmeter\lib</extdirs>
</compilerArguments>
</configuration>
</plugin>

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<version>1.0-beta-3</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>transform</goal>
</goals>
</execution>
</executions>
<configuration>
<transformationSets>
<transformationSet>
<dir>${jmeter.result.jtl.dir}</dir>
<stylesheet>src\test\resources\jmeter-results-detail-report_21.xsl</stylesheet>
<outputDir>${jmeter.result.html.dir}</outputDir>
<fileMappers>
<fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
<targetExtension>html</targetExtension>
</fileMapper>
</fileMappers>
</transformationSet>
<transformationSet>
<dir>${jmeter.result.jtl.dir}</dir>
<stylesheet>src\test\resources\jmeter.results.shanhe.me.xsl</stylesheet>
<outputDir>${jmeter.result.html.dir1}</outputDir>
<fileMappers>
<fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
<targetExtension>html</targetExtension>
</fileMapper>
</fileMappers>
</transformationSet>
</transformationSets>

</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/jmeter/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>theMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
<defaultGoal>clean</defaultGoal>
</build>
</project>

4,调试工程,确保工程能正常运行

三,安装jenkins跟一些必要的插件
1,下载对应windows安装的jenkins

2,安装好jenkins后本地启动jenkins,进入插件管理界面,国内由于被墙了,所以需要配置一下。系统管理->管理插件->

高级->升级站点 中输入:http://updates.jenkins-ci.org/update-center.json 提交保存后,在地址栏输入

http://localhost:8080/restart重启,再次进入插件管理界面这时可选插件界面就会有内容了

3,需要安装的插件

Maven Integration plugin Maven插件

Performance plugin 性能报告插件

HTML Publisher plugin HTTP report插件

Git plugin GIT 插件

4,插件安装好后,就可以新建一个项目了,这里我们选择构建一个maven项目,名称为bluemoon

选择Git,输入Git服务器的URL地址,用户名跟密码

Build选项中输入pom.xml文件路径

添加构建后操作,增加一个Publish HTML reports,html directory to archive为转译后html文件的保存路径,

index pages 为转译后的文件名称,report title 为jenkins中显示的标题

构建后操作还可以添加邮件服务模块,就是构建成功后会发送邮件通知,这里就不举例了。

5,点击应用,保存。这时就可以点击立即构建来触发构建功能了

6,Console putput可以查看输入日志,方便构建时查看哪里出现的问题

7,构建成功后,我们就可以查看脚本运行后的结果,点击performace或function来查看

这里可以看到生成的html在jenkins使用html publisher查看报告时,发现显示不美观,不全的现象,很多东西显示不了。

在查看官方文档后,这原来是安全问题所导致的。

Jenkins安全默认是将以下功能都关闭了

1、javascript
2、html上的内置插件
3、内置css或从其它站的css
4、从其它站的图处
5、AJAX

我的网页使用的是css,所以显示不全。

解决这个问题可以在jenkins系统管理中输入以下脚本运行,就可以解决这个问题了

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

四,最终效果

五,遇到的其他一些问题
1、当我们jmeter脚本中要运用jdbc来连接数据库时,此时是需要jdbc驱动的,这里解决的办法就是在dependecy中增

加依赖,然后再把这个依赖包拷贝到target的lib库中,这样用于引用jdbc的jar包就放到了lib中,也就解决了找不到jdbc
驱动的问题

    <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.13</version>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/jmeter/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>theMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>

2、如下图中,报告中有写图标是没有显示出来的,造成这个问题的原因是我们用jenkins持续集成时把把代码拷到target工程中没有把相应的图标拷贝过去,那么我们只
要把这个图标拷贝过去不就可以解决了吗?答案是肯定的。

把这两个图标文件一起放到工程中的src/test/resources目录下,再在pox中添加以下插件即可

这里我在pom文件中添加了一个插件,代码如下:

                <plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<!-- test可以在环境变量中定义,也可以将下面写成绝对地址 -->
<outputDirectory>${project.build.directory}/jmeter/html</outputDirectory>
<resources>
<resource>
<!-- basedir标识所有工程 -->
<directory>${basedir}/src/test/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>

3、这里还需要注意的一个地方就是,在src/test/jmeter目录下要添加一个jmeter.proprtties文件,这个文件可以从我们自己下载的jmeter解压包中bin中找到,然后修改文件中对应内容为如下:


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
# Only available with HttpClient4
jmeter.save.saveservice.sent_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

这里这样做的目的是在我们查看生成的html报告时不会出现没有Request跟Response内容的问题。

4、我还遇到过这么一个问题,就是我们有时候会用到beanshell脚本,而用到beanshell脚本的时候有可能会用到我们自己写的jar包。比如我用到一个自己写的获取时间的jar,当时把这个jar包放到了下图目录下

然后通过maven-resources-plugin插件把这个包拷贝到jmeter/lib/ext目录下当时出错的代码是这样的:

<!-- resources文件夹下面的文件拷贝到jmeter/lib/ext目录下 -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources-lib</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<!-- test可以在环境变量中定义,也可以将下面写成绝对地址 -->
<outputDirectory>${project.build.directory}/jmeter/lib/ext</outputDirectory>
<resources>
<resource>
<!-- basedir标识所有工程 -->
<directory>${basedir}/src/test/lib</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>

我们的jar成功拷贝到jemter/lib/ext目录下了,但是执行jmeter脚本的时候却报错:

jorphan.reflect.ClassFinder: Can not open the jar D:/eclipse-workspace/vet/target/jmeter/lib/ext/getTime.jar invalid CEN header (bad signature) java.util.zip.ZipException: invalid CEN header (bad signature)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(Unknown Source)
at java.util.zip.ZipFile.<init>(Unknown Source)
at java.util.zip.ZipFile.<init>(Unknown Source)
at org.apache.jorphan.reflect.ClassFinder.findClassesInOnePath(ClassFinder.java:435)
at org.apache.jorphan.reflect.ClassFinder.findClasses(ClassFinder.java:289)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:264)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:196)
at org.apache.jmeter.engine.util.CompoundVariable.<clinit>(CompoundVariable.java:71)
at org.apache.jmeter.engine.util.ValueReplacer.<init>(ValueReplacer.java:44)
at org.apache.jmeter.engine.PreCompiler.<init>(PreCompiler.java:52)
at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:305)
at java.lang.Thread.run(Unknown Source)

此时百度说我拷贝的jar包可能出错,百思不得其解。最后找了一个md5校验工具,果不其然,md5确实跟源文件的md5值不一致了。在差点要放弃的时候我把maven-resources-plugin插件中一个参数改成了false。

<!-- resources文件夹下面的文件拷贝到jmeter/lib/ext目录下 -->
<resource>
<!-- basedir标识所有工程 -->
<directory>${basedir}/src/test/lib</directory>
<filtering>false</filtering>
</resource>

最后执行工程,问题得到解决。

5、最近又想起了一个问题,就是我们能不能在构建成功后,如果脚本中有些用例执行失败是否可以发送邮件通知呢?这个是肯定的,然后我这里也写了下怎么触发邮件通知。
首先我们需要配置下jenkins全局配置中的邮件通知这个插件,具体配置大概如下图:


然后再到job设置中添加publish performance test result report插件,输入以下信息:

最后添加插件 Editable Email Notification

特别注意,这里用到了一个邮件模板,所以还需要在jenkins安装目录下创建一个email-templates目录,然后新建一个文件命名为testy.template,并输入以下内容:

<STYLE>
BODY, TABLE, TD, TH, P {
font-family:Verdana,Helvetica,sans serif;
font-size:11px;
color:black;
}
h1 { color:black; }
h2 { color:black; }
h3 { color:black; }
TD.bg1 { color:white; background-color:#0000C0; font-size:120% }
TD.bg2 { color:white; background-color:#4040FF; font-size:110% }
TD.bg3 { color:white; background-color:#8080FF; }
TD.test_passed { color:blue; }
TD.test_failed { color:red; }
TD.console { font-family:Courier New; }
</STYLE>
<BODY>

<TABLE>
<TR><TD align="right"><IMG SRC="${rooturl}static/e59dfe28/images/32x32/<%= (build.result == null || build.result.toString() == 'SUCCESS') ? "blue.gif" : build.result.toString() == 'FAILURE' ? 'red.gif' : 'yellow.gif' %>" />
</TD><TD valign="center"><B style="font-size: 200%;">BUILD ${build.result ?: 'SUCCESSFUL'}</B></TD></TR>
<TR><TD>URL</TD><TD><A href="${rooturl}${build.url}">${rooturl}${build.url}</A></TD></TR>
<TR><TD>Project:</TD><TD>${project.name}</TD></TR>
<TR><TD>Date:</TD><TD>${it.timestampString}</TD></TR>
<TR><TD>Duration:</TD><TD>${build.durationString}</TD></TR>
<TR><TD>Cause:</TD><TD><% build.causes.each() { cause -> %> ${cause.shortDescription} <% } %></TD></TR>
</TABLE>
<BR/>

<!-- CHANGE SET -->
<% def changeSets = build.changeSets
if(changeSets != null) {
def hadChanges = false %>
<TABLE width="100%">
<TR><TD class="bg1" colspan="2"><B>CHANGES</B></TD></TR>

<% changeSets.each() { cs_list ->
cs_list.each() { cs ->
hadChanges = true %>
<TR>
<TD colspan="
2" class="bg2">&nbsp;&nbsp;Revision <B><%= cs.metaClass.hasProperty('commitId') ? cs.commitId : cs.metaClass.hasProperty('revision') ? cs.revision :
cs.metaClass.hasProperty('changeNumber') ? cs.changeNumber : "" %></B> by
<B><%= cs.author %>: </B>
<B>(${cs.msgAnnotated})</B>
</TD>
</TR>
<% cs.affectedFiles.each() { p -> %>
<TR>
<TD width="
10%">&nbsp;&nbsp;${p.editType.name}</TD>
<TD>${p.path}</TD>
</TR>
<% }
}
}

if(!hadChanges) { %>
<TR><TD colspan="
2">No Changes</TD></TR>
<% } %>
</TABLE>
<BR/>
<% } %>

<!-- ARTIFACTS -->
<% def artifacts = build.artifacts
if(artifacts != null && artifacts.size() > 0) { %>
<TABLE width="
100%">
<TR><TD class="
bg1"><B>BUILD ARTIFACTS</B></TD></TR>
<TR>
<TD>
<% artifacts.each() { f -> %>
<li>
<a href="
${rooturl}${build.url}artifact/${f}">${f}</a>
</li>
<% } %>
</TD>
</TR>
</TABLE>
<BR/>
<% } %>

<!-- MAVEN ARTIFACTS -->
<%
try {
def mbuilds = build.moduleBuilds
if(mbuilds != null) { %>
<TABLE width="
100%">
<TR><TD class="
bg1"><B>BUILD ARTIFACTS</B></TD></TR>
<%
try {
mbuilds.each() { m -> %>
<TR><TD class="
bg2"><B>${m.key.displayName}</B></TD></TR>
<% m.value.each() { mvnbld ->
def artifactz = mvnbld.artifacts
if(artifactz != null && artifactz.size() > 0) { %>
<TR>
<TD>
<% artifactz.each() { f -> %>
<li>
<a href="
${rooturl}${mvnbld.url}artifact/${f}">${f}</a>
</li>
<% } %>
</TD>
</TR>
<% }
}
}
} catch(e) {
// we don't do anything
} %>
</TABLE>
<BR/>
<% }

}catch(e) {
// we don't do anything
}
%>

<!-- JUnit TEMPLATE -->

<% def junitResultList = it.JUnitTestResult
try {
def cucumberTestResultAction = it.getAction("
org.jenkinsci.plugins.cucumber.jsontestsupport.CucumberTestResultAction")
junitResultList.add(cucumberTestResultAction.getResult())
} catch(e) {
//cucumberTestResultAction not exist in this build
}
if (junitResultList.size() > 0) { %>
<TABLE width="
100%">
<TR><TD class="
bg1" colspan="2"><B>${junitResultList.first().displayName}</B></TD></TR>
<% junitResultList.each{
junitResult -> %>
<% junitResult.getChildren().each { packageResult -> %>
<TR><TD class="
bg2" colspan="2"> Name: ${packageResult.getName()} Failed: ${packageResult.getFailCount()} test(s), Passed: ${packageResult.getPassCount()} test(s), Skipped: ${packageResult.getSkipCount()} test(s), Total: ${packageResult.getPassCount()+packageResult.getFailCount()+packageResult.getSkipCount()} test(s)</TD></TR>
<% packageResult.getFailedTests().each{ failed_test -> %>
<TR bgcolor="
white"><TD class="test_failed" colspan="2"><B><li>Failed: ${failed_test.getFullName()} </li></B></TD></TR>
<% }
}
} %>
</TABLE>
<BR/>
<%
} %>

<!-- CONSOLE OUTPUT -->
<% if(build.result==hudson.model.Result.FAILURE) { %>
<TABLE width="
100%" cellpadding="0" cellspacing="0">
<TR><TD class="
bg1"><B>CONSOLE OUTPUT</B></TD></TR>
<% build.getLog(100).each() { line -> %>
<TR><TD class="
console">${org.apache.commons.lang.StringEscapeUtils.escapeHtml(line)}</TD></TR>
<% } %>
</TABLE>
<BR/>
<% } %>

</BODY>

最终邮件截图:

mark下谢谢!

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 31 条回复 时间 点赞

楼主排版下吧

嗯,昨天下班前比较冲忙忘记排版了

如果我一个jmeter中有多个接口。有没有办法。通过指定参数的方式 只执行第二个呢?
因为jmeter会把所有启用的请求都执行了。

cxf 回复

你只要在可视化窗口把你不想要运行的请求置灰也就是禁用掉,然后你再执行就不会把这些请求也执行了。

小蜜蜂 回复

生成的报告中min time和max time都显示NaN,楼主你是怎么解决的呢?

nyf429 回复

把对应的图标放到你生成报告的那个目录下就可以了

nyf429 回复

你NaN的问题解决了吗?我也碰到这个问题,看到篇文章说“在pom.xml里加上 using XSLT 2.0 依赖”,但是试下来还是没有解决。

RioMa 回复

我换了个pom方式解决的 也是依赖xslt

RioMa 回复

你把那个图标放到对应的目录下就可以了,报告是html的,显示nan是没有找到图标

小蜜蜂 我的 2017,收获与成长 中提及了此贴 19 Jan 15:36
Author only
John 回复

有报什么错吗?

Author only
John 回复

赞:👍 ,我记得上次也有个网友也是这个插件不匹配的问题

小蜜蜂 回复

请问maven配置如何解决Date report: date not defined 的问题?

请问那个详细报告里的request以下的内容都是空的,jmeter.properties文件中也都改为了true还是不显示,如何解决呢?

每次构建都自动下载jmeter.properties,放到target/jmeter/bin目录下,所以保存的测试结果都是csv格式,无法生成报告,楼主怎么解决的?

小蜜蜂 #18 · March 22, 2018 作者
冯一博 回复

你这个估计是脚本都没跑成功吧

小蜜蜂 #19 · March 22, 2018 作者
lk1095 回复

生成报告主要是靠插件对jtl通过模板转意,所以一个就是判断插件是否获取成功,第二个就是判断job工作目录中有没有把那几个模板拷贝过去

maven这种构建有个问题,多个脚本执行结果生成多个报告,不会合并测试结果

小蜜蜂 #21 · April 10, 2018 作者
John 回复

我还没试过跑两个脚本的呢,如果两个jmx不能转译成一个报告,那么是否可以把两个jmx合并到一个jmx中的两个线程组里去呢?这样是否就可以避免这种问题了?

22Floor has been deleted
小蜜蜂 回复

脚本是跑成功的,使用ant调试都是ok的,换到maven之后脚本都已经调试过了,两份报告一份是成功的,只有这一份request部分是空的

小蜜蜂 #24 · June 07, 2018 作者
冯一博 回复

好像之前也有人问过我,你检查下用maven编译的时候里面用到的jmeter插件版本是不是不对,最好把里面用到的插件都替换到可以用的版本

楼主,jmeter请求参数用得参数化csv文件,在Jenkins中git拉取,怎么能识别到参数化地址呢

staceyjiao 回复

我门不是把csv放到了工程目录下吗?然后用那个拷贝的插件拷贝到对应的目录下去,参数化的时候就去你拷贝后的目录下拿

jenkins 调用jmeter 脚本执行的时候用jmeter 版本是哪里的 有没有人知道 我本地是jmeter 3.0 jenkins 是别人已经部署ok的 但是我的脚本在build的时候经常出错 后来察看本地的log日志发现build 调用的jmeter 版本是2.1 有点迷糊这个版本是哪里来的

jenkins的就是pom.xml文件中添加的插件啊,你添加的多少那么构建的时候就用哪个版本构建

为什么在IDEA下无法读取到xsl,一直提示这个 No files found for transformation by stylesheet

Feng 回复

你路径写对没

小蜜蜂 回复

嗯嗯 是jmeter-maven-plugin 我有在github看到它的版本和jmeter版本对应的说明

Author only
昨天有雨 回复

应该的,忘记了

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up