繁体   English   中英

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

[英]JMeter - Running preprocessor when called from command line?

我是JMeter的新手。

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

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

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

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

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

从命令行调用预处理器时是否不运行? 可能还有其他我想念的东西吗? 鉴于我在这里的经验不足,我什至不十分确定如何分辨问题所在。

非常感谢!

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

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

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

在此处输入图片说明

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

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

在此处输入图片说明

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

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

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

在此处输入图片说明

预处理程序仅与采样器一起执行

如果线程组中没有任何Sampler,则不会执行任何PreProcessor。

还应注意,预处理器遵循JMeter 范围规则以进行以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM