我在JMeter中有一个测试,在GUI中它运行得很好,但是当我使用我的Java代码运行它时(比如从这里:http://blazemeter.com/blog/5-ways-launch-jmeter-test-without-using-jmeter-gui),我无法从属性中检索参数。如果我把它们印在beanshell日志里,我就能看到它们。但是,当我试图在线程组中使用这个参数作为用户数时,它是不起作用的。
更多信息:
${__p(paramName)}
还尝试了$(__property{paramName})
。JMeterutils.SetProperty(“paramName”,“5”);
添加bean shell片段:
import org.apache.jmeter.util.JMeterUtils;
import java.io.*;
BufferedReader br = new BufferedReader(new FileReader("C:\\res\\movieResultData.csv"));
String line;
int counter = 0;
while ((line = br.readLine()) != null) {
counter++;
}
br.close();
JMeterUtils.setProperty("statsThreadNum",Integer.toString(counter-1));
我的Java代码:
@Test
public void ttt() throws Exception {
// JMeter Engine
StandardJMeterEngine jmeter = new StandardJMeterEngine();
// Initialize Properties, logging, locale, etc.
JMeterUtils.loadJMeterProperties("C:\\apache-jmeter-2.12\\bin\\jmeter.properties");
JMeterUtils.setJMeterHome("C:\\apache-jmeter-2.12");
//JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level
JMeterUtils.initLocale();
// Initialize JMeter SaveService
SaveService.loadProperties();
// Load existing .jmx Test Plan
FileInputStream in = new FileInputStream("C:\\apache-jmeter-2.12\\bin\\statsTests2.jmx");
HashTree testPlanTree = SaveService.loadTree(in);
in.close();
// Run JMeter Test
jmeter.configure(testPlanTree);
jmeter.run();
}
正确的语法应该是:
${__P(prop_name)}
如果您通过仅Java的实现运行它,请确保在JVM启动时将属性文件传递给它,或者使用以下代码片段:
JMeterUtils.loadJMeterProperties("/path/to/your/jmeter/bin/jmeter.properties");
您是否使用Apache Exec从Java启动JMeter作为外部进程?如果是,请确保使用以下选项生成CMD line语句:
-p, --propfile {argument}
the jmeter property file to use
-G, --globalproperty (argument)[=(value)]
Define Global properties (sent to servers)
向我们展示用于在Setup中设置属性的Beanshell的一个片段可能会很有用。
编辑:我相信问题可能在于你的Beanshell是如何访问属性的。我从来没有访问过JMeterUtils类来操作JMX中的变量或属性。
分配属性的Beanshell语法:
props.put("test_prop_name","prop_value");
获取属性的Beanshell语法:
props.get("test_prop_name");
为变量赋值属性的Beanshell语法:
vars.put("test_var_name",props.get("test_prop"));
然后可以在采样器中引用该变量,如下所示:
${test_var_name}
或者您应该能够在采样器中直接访问该属性,如下所示:
${__P(test_prop_name)}
此外,如果您希望修复JMeter2.13中的Maven问题,请使用以下POM:
<dependencies>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_config</artifactId>
<version>2.13</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>commons-math3</groupId>
<artifactId>commons-math3</artifactId>
</exclusion>
<exclusion>
<groupId>commons-pool2</groupId>
<artifactId>commons-pool2</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>2.13</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>commons-math3</groupId>
<artifactId>commons-math3</artifactId>
</exclusion>
<exclusion>
<groupId>commons-pool2</groupId>
<artifactId>commons-pool2</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.4.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.3</version>
<scope>provided</scope>
</dependency>
</dependencies>
我创建了一个简单的测试来尝试Junit 5: 这就是我使用的依赖关系: 堆栈跟踪是下一步: 知道哪里出了问题吗?
我正在使用gradle来构建和测试我的应用程序。我使用命令 但是当从eclipse中运行时,测试工作完美,当使用gradle运行时失败。我的测试定义如下,它找不到的属性文件在这两个文件夹中: /home/user/Development/git/myproject/src/main/java/com/mycompany/config/home/user/Development/git/myproj
问题内容: 我最近偶然发现了geb,这似乎是对我们的Web应用程序执行集成测试的好方法。我们的平台都是基于Java的,从阅读中可以得知 “ Geb通过与流行的测试框架(例如… JUnit,TestNG …)集成,为功能性Web测试提供了一流的支持。” 我认为从Java类执行测试很容易(testng测试?)。 我是groovy和geb的新手。 到目前为止,我在pom中包含了geb-testng和gr
我们已经为spark编写了单元测试,在本地模式下有4个线程。 当一个接一个地启动时,例如通过intellij或sbt testOnly,每个测试都运行良好。 当用sbt测试启动时,它们会出现如下错误 我们使用的是一个带有多个子项目的sbt项目,其定义如下:
我在无头模式下运行测试时遇到问题。我在两个不同的地方编写了测试用例(web商店和门户)。同样,我使用Headless,当Headless在web shop中为true时,我的测试工作,但当Headless在门户测试用例中为true时,它们不工作。 组织。openqa。硒。ElementClickInterceptedException:元素单击intercepted:元素在点(480483)处不可
我的目标是使用 4 个 Azure 服务器作为负载生成器和 1 个 Azure 服务器来运行负载测试,以启动测试并收集结果。我运行了分布式测试,并且获得了良好的数据。但是今天当我远程启动测试时,4个负载生成器中的3个失败,所有http事务出错。失败的事务记录以下错误: 非HTTP响应消息:java.lang.ClassNotFoundException:org.apache.commons.log