我是JMeter的新手。
我的团队拥有我们通常通过GUI运行的现有JMeter测试计划。我正在尝试从命令行运行它。
在我们的测试计划中,我们有一堆在TestPlan级别声明的变量。这些变量包含用于设置不同环境(例如,test,prod,dev)的信息。直接在TestPlan之下的是一个JSR223 PreProcessor,它基本上使用变量来显示您要在哪个环境中运行,并将主机名,端口等设置为该环境的值。
当我使用GUI运行测试时,它可以在所选环境下完美运行。但是,当我使用以下命令在命令行中运行它时:
jmeter -n -t testName.jmx -l Results.csv
它尝试在默认环境下运行,并且不会将其更改为我想要的环境。我尝试添加-Jenv=dev
,但这似乎没有任何区别。
从命令行调用预处理器是否不运行?可能还有其他我想念的东西吗?鉴于我在这里的经验不足,我什至不确定我怎么知道问题出在哪里。
非常感谢!
答案 0 :(得分:0)
很难断定jmeter脚本中的确切问题是什么。查看问题陈述,我可以感觉到您需要找到从命令行传递变量并在脚本中对其进行处理的正确方法。
从命令行传递变量并在jmeter中对其进行处理的示例如下所示:
env is declared as ${__P(env)}
${env}
变量重用该值[请注意,它是一个变量而不是属性,因为我们在用户定义的变量中声明了这种方式]。 String valuePassed = vars.get("env");
log.info("Parameter passed from command line: " + valuePassed);
使用以下命令从命令行运行:
jmeter -n -t <>.jmx -Jenv=Prod -j sample.log
结果显示在日志文件中
答案 1 :(得分:0)
如果您的Thread Group中没有任何采样器-将不会执行任何预处理器。
还请注意,预处理器遵循JMeter Scoping Rules的智慧: