如何为每个请求制作一个 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 函数的主要内容,如果未能解决你的问题,请参考以下文章