JMeter-从命令行调用时正在运行预处理器?

时间:2019-08-09 19:21:16

标签: bash command-line jmeter

我是JMeter的新手。

我的团队拥有我们通常通过GUI运行的现有JMeter测试计划。我正在尝试从命令行运行它。

在我们的测试计划中,我们有一堆在TestPlan级别声明的变量。这些变量包含用于设置不同环境(例如,test,prod,dev)的信息。直接在TestPlan之下的是一个JSR223 PreProcessor,它基本上使用变量来显示您要在哪个环境中运行,并将主机名,端口等设置为该环境的值。

当我使用GUI运行测试时,它可以在所选环境下完美运行。但是,当我使用以下命令在命令行中运行它时:

jmeter -n -t testName.jmx -l Results.csv

它尝试在默认环境下运行,并且不会将其更改为我想要的环境。我尝试添加-Jenv=dev,但这似乎没有任何区别。

从命令行调用预处理器是否不运行?可能还有其他我想念的东西吗?鉴于我在这里的经验不足,我什至不确定我怎么知道问题出在哪里。

非常感谢!

2 个答案:

答案 0 :(得分:0)

很难断定jmeter脚本中的确切问题是什么。查看问题陈述,我可以感觉到您需要找到从命令行传递变量并在脚本中对其进行处理的正确方法。

从命令行传递变量并在jmeter中对其进行处理的示例如下所示:

  1. 在jmeter中声明一个具有值的变量作为属性。您可以在这里使用任何东西,我已经使用了用户定义的变量。变量env is declared as ${__P(env)}

enter image description here

  1. 使用JSR处理该变量。这里只是打印从参数传递的值到jmeter日志中。现在,可以使用${env}变量重用该值[请注意,它是一个变量而不是属性,因为我们在用户定义的变量中声明了这种方式]。

String valuePassed = vars.get("env"); log.info("Parameter passed from command line: " + valuePassed);

enter image description here

  1. 使用以下命令从命令行运行:

    jmeter -n -t <>.jmx -Jenv=Prod -j sample.log

  2. 结果显示在日志文件中

enter image description here

答案 1 :(得分:0)

PreProcessors仅与Samplers

一起执行

如果您的Thread Group中没有任何采样器-将不会执行任何预处理器。

还请注意,预处理器遵循JMeter Scoping Rules的智慧:

  • 如果您添加了PreProcessor作为Sampler的子级-PreProcessor将在给定的Sampler之前执行
  • 如果您在同一级别上有2个采样器和一个预处理器-预处理器将在每个采样器之前执行
相关问题