使用maven运行jmeter测试脚本进行自动化接口测试-进阶
前言
承接上文 - 使用maven运行jmeter测试脚本进行自动化接口测试 本次主要增强了在自动化测试阶段的配置项,以及使用 jmeter gui 界面时的自动配置项。 使得gui 界面下与 非gui下自动测试的jmx脚本能够不做任何变更,即可在两种不同的环境下运行。使用gui界面更容易对脚本进行调试和测试。 检测无误后即可放到自动化测试环境下运行。
完整的 pom.xml 配置
涉及到如何使用第三方jar文件,以及使用自己本地的jar文件。如何通过jmx_file参数传递要测试的文件名等。
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>top.yjp</groupId>
<artifactId>jmeter-tools</artifactId>
<version>1.0.1</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<java.version>1.8</java.version>
<!-- 指定jmeter版本 -->
<jmeter.version>5.4.3</jmeter.version>
<!-- 指定jmeter-plugin版本 -->
<jmeter-maven-plugin.version>3.5.0</jmeter-maven-plugin.version>
<!-- 指定使用的mysql jdbc driver的版本 -->
<mysql-driver.version>8.0.29</mysql-driver.version>
</properties>
<profiles>
<profile>
<!-- 定义测试环境 -->
<id>test</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<testing.profile>test</testing.profile>
</properties>
</profile>
<profile>
<!-- 定义预发环境 -->
<id>pre</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<testing.profile>pre</testing.profile>
</properties>
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>${jmeter.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<!-- 命令行执行: mvn clean verify -->
<!-- 文档及配置 https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/wiki/ -->
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>${jmeter-maven-plugin.version}</version>
<configuration>
<!-- 使用特定的 jmeter 版本 -->
<jmeterVersion>${jmeter.version}</jmeterVersion>
<generateReports>true</generateReports>
<customPropertiesFiles>
<!-- 指定要使用的自定义属性文件 -->
<propertiesFile>src/test/resources/${testing.profile}.properties</propertiesFile>
</customPropertiesFiles>
<propertiesJMeter>
<log_level.jmeter>DEBUG</log_level.jmeter>
<!-- 定义自己的classpath加载路径 -->
<user.classpath>${project.basedir}/lib/jmeter-tools-${project.version}.jar</user.classpath>
</propertiesJMeter>
<propertiesUser>
<!-- 用户定义的变量,相当于 jmeter 的 -J选项传递的变量及值 -->
<file_path>${project.basedir}</file_path>
</propertiesUser>
<jmeterExtensions>
<!-- 此处定义的jar依赖,下载后将放置在jmeter/lib/ext文件夹下 -->
<artifact>mysql:mysql-connector-java:${mysql-driver.version}</artifact>
</jmeterExtensions>
<testPlanLibraries>
<!-- 此处定义的jar依赖,将从maven源下载后放到jmeter/lib下面 因此需要保证maven源有该artifact -->
<!-- <artifact>mysql:mysql-connector-java:8.0.29</artifact> -->
</testPlanLibraries>
<testFilesIncluded>
<!-- 指定运行的jmeter脚本 可以使用通配符 例如: **/*.jmx 通过命令传递参数 -Djmx_file="**/test.jmx" 方式传递 -->
<!--suppress UnresolvedMavenProperty -->
<jMeterTestFile>${jmx_file}</jMeterTestFile>
</testFilesIncluded>
</configuration>
<executions>
<!-- Generate JMeter configuration -->
<execution>
<id>configuration</id>
<goals>
<goal>configure</goal>
</goals>
</execution>
<!-- Run JMeter tests -->
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
</goals>
<configuration>
<testFilesDirectory>${project.basedir}</testFilesDirectory>
</configuration>
</execution>
<!-- Fail build on errors in test -->
<execution>
<id>jmeter-check-results</id>
<goals>
<goal>results</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
运行非gui环境的测试
例如要运行test.jmx这个测试脚本。 执行如下命令:
# 非图形界面下运行测试脚本test.jmx(使用test环境)
mvn clean verify -Ptest -Djmx_file="**/test.jmx"
# 非图形界面下运行测试脚本test2.jmx(使用pre环境)
mvn clean verify -Ppre -Djmx_file="src/test/jmeter/test.jmx"
运行gui图形界面
执行如下命令:
# 当你首次执行图形界面的时候,需要进行配置,运行configure
mvn jmeter:configure
# 只要配置configure完毕后,可以多次运行下面的命令开启jmeter图形界面
# 使用指定的环境(例如:test)
mvn jmeter:gui -Ptest
# 或者执行配置和gui并打开一个测试脚本
mvn jmeter:gui -Ptest -DguiTestFile=src/test/jmeter/test.jmx
这样你就可以在相同的环境,使用gui界面编写jmeter测试脚本,并进行调试了。
待解决
启动图形界面的时候,原本命令行 jmeter -t src/test/jmeter/test.jmx
这样直接打开一个测试脚本文件的命令,不太知道怎么用maven的形式传递过去。如果能够传递过去就更加的方便了,现在这种就只能是使用jmeter gui里的打开文件对话框去选择文件。
补充:阅读官网 https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/wiki/Basic-Configuration 发现使用 guiTestFile 可以打开指定文件 例如:
mvn jmeter:configure jmeter:gui -DguiTestFile=src/test/jmeter/test.jmx
完美!!!