首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从BeanShell程序(如PreProcessor、PostProcessor、断言等)调用PreProcessor函数

从BeanShell程序(如PreProcessor、PostProcessor、断言等)调用PreProcessor函数
EN

Stack Overflow用户
提问于 2017-07-07 08:45:59
回答 2查看 2.6K关注 0票数 1

Pre-requisite:

在JMeter bin文件夹中,我编辑了BeanShellFunction.bshrc文件以添加我的函数如下

代码语言:javascript
复制
String getMyString()
{
    return "MyString";
}

我已将BeanShellFunction.bshrcjmeter.properties文件中启用为

beanshell.function.init = BeanShellFunction.bshrc

当我使用下面的语法调用函数时,它工作得很好。

代码语言:javascript
复制
${__BeanShell(getMyString())}

它适用于以下情况:

问题:

如何从BeanShell程序(如PreProcessor、PostProcessor、断言等)调用相同的函数?

分析:

我试着做了以下几件事,但没有运气:

代码语言:javascript
复制
String myStr = getMyString();

它提供了一个错误,因为:

断言错误:真 断言失败:假 断言失败消息: org.apache.jorphan.util.JMeterException:错误调用bsh方法: eval源文件:内联计算: String myStr = getMyString();print("MyStr:"+myStr);'‘:类型化变量声明:未找到命令: getMyString()

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-07 11:11:32

从这篇文章中我找到了解决方案:从BeanShell断言脚本调用Jmeter函数

溶液

对于每种BeanShell程序类型,bin/user.properties中定义了不同的beanshell.*.init属性

beanshell.function.init=BeanShellFunction.bshrc beanshell.preprocessor.init=BeanShellSampler.bshrc beanshell.postprocessor.init=BeanShellSampler.bshrc beanshell.assertion.init=BeanShellFunction.bshrc

因此,需要从任何程序(预处理程序、后处理器等)调用相同的函数,我们需要将函数.bshrc复制到每个.bshrc文件,或者对每个程序init属性使用相同的文件

使用语法:

您需要使用用于发送URL参数的相同语法:

代码语言:javascript
复制
String myStr = "${__BeanShell(getMyString())}";

这将自动从定义的.bshrc文件中调用beanshell方法。

用于高级脚本

如果您的BeanShell函数接受一个参数:

代码语言:javascript
复制
String getMyString(String strParam)
{
    return "MyString: "+strParam;
}

如果要将属性作为参数传递给BeanShell函数,则可以使用以下语法:

代码语言:javascript
复制
String myStr = "${__BeanShell(getMyString("${__P(param1)}"))}";

相信我,它是有效的,它不会产生任何语法错误。

票数 0
EN

Stack Overflow用户

发布于 2017-07-07 09:48:02

  1. 将下一行添加到user.properties文件(在JMeter安装的"bin“文件夹下) beanshell.function.init=BeanShellFunction.bshrc
  2. 重新启动JMeter以拾取属性
  3. 一旦完成,您应该能够在任何需要的地方使用它。

同样的方法也适用于

  • beanshell.sampler.init
  • beanshell.assertion.init
  • beanshell.listener.init
  • 等。

参考文献:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44966418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档