如何为每个请求制作一个 beanscript 函数

Posted

技术标签:

【中文标题】如何为每个请求制作一个 beanscript 函数【英文标题】:How to make a beanscript function for every request 【发布时间】:2022-01-24 05:41:25 【问题描述】:

我现在在每个请求中都有 2 种类型的脚本。是否可以制作A函数和B函数并决定脚本中使用什么脚本?

现在:

Request1
 |_ ScriptA
Request2
 |_ ScriptB
Request3
 |_ ScriptA

我想要

Common Script A
Common Script B
Request1
 |_ Call Common Script A
Request2
 |_ Call Common Script B
Request3
 |_ Call Common Script A

【问题讨论】:

【参考方案1】:

如果您添加Post/Pre 处理器,它将在每个请求之后/之前执行:

Pre/Post Processor Script
Request1
Request2
Request3

后处理器在采样器之后应用。请注意,它们适用于同一范围内的所有采样器,

如果您使用JSR223 script,您可以使用相同的文件名,这样您就可以编写一次代码(DRY 原则)

要用作 JSR223 脚本的文件的脚本文件名

【讨论】:

感谢您的回答,事实上,我的 Jmeter 文件中有两种类型的脚本,请求将使用一种类型的脚本。所以我认为前/后处理器脚本在我的情况下无法切换脚本 @J.SLee 你能分割成每个文件的脚本吗?如果不能,您可以将脚本编译为 jar 文件,将 jar 添加到 JMeter 类路径并使用里面的方法吗?【参考方案2】:

取决于你想要达到的目标:

    Beanshell PreProcessor 将在 请求之前执行

    其他 Beanshell 测试元素(后处理器、断言、侦听器)将在 请求之后执行

    所有上述测试元素都服从JMeter Scoping Rules

    如果您希望“函数”充当单独的请求并将执行时间记录到 .jtl 结果文件中 - 转到 Beanshell Sampler,您可以将其放在 Test Fragment 下并在 Module Controller 中引用它避免代码重复

    Since JMeter 3.1 it's recommended to use JSR223 Test Elements and Groovy language for scripting 所以考虑迁移是有意义的

【讨论】:

以上是关于如何为每个请求制作一个 beanscript 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何为类的每个实例创建实例特定的方法?

如何为 Android Room 请求制作通用 AsyncTask

如何为每个属性定义具有不同计时功能的 CSS 动画?

如何为数据框列表制作条形图?

如何为 jQuery 选择器制作自定义函数

如何为所有模式制作一个脚本?