BeanShell 是一种轻量级的脚本语言,嵌入在 Java 中运行,允许开发者动态执行和调试 Java 代码。它在 JMeter 等工具中常用于编写脚本以增强测试功能。BeanShell 提供了一个 Java 语法的脚本环境,支持标准的 Java 语法和特性,同时也允许更灵活和动态的脚本编写。用户可以使用 BeanShell 直接操作 JMeter 的上下文变量,执行自定义的逻辑判断和数据处理。对于熟悉 Java 的用户,BeanShell 是一种方便且强大的扩展工具,可以简化测试自动化和动态配置。
比如在上一篇文章【日出日落时间本地化的坑】中,提到了一个接口返回的日出日落时间戳有问题,实际修复后需要验证测试不同场景是否正确修复,在使用Jmeter做功能测试时,就可以利用 BeanShell 来完成。
比如接口返回值如下
使用JSON提取器获取日出日落参数

再使用 BeanShell 脚本进行本地化日期的判断

这里有几个注意项
- Java 8 的时间类 (
Instant,ZoneId,ZonedDateTime,DateTimeFormatter) 在 BeanShell 中可能无法直接使用。可以使用SimpleDateFormat和Calendar来替代这些类。
- 在 JMeter 中,可以通过
vars对象来获取上下文变量和进行日志记录。
- 在 BeanShell 断言失败,可以通过设置
Failure或FailureMessage来标记。
验证实际不同经纬度的日出日落时间戳是否正确结果如下。
修复前的接口在北京时间晚上11点多调用接口,-7、-10、+12时区返回结果都有问题,修复后都是正常的。

BeanShell 提供了一个灵活且强大的工具,使我们能够编写动态脚本,以增强测试的灵活性和精确性。无论是对变量进行操作、执行条件判断,还是进行复杂的逻辑处理,BeanShell 都可以满足我们的需求。特别是对于熟悉 Java 编程的用户,BeanShell 的使用将变得非常直观和便捷。希望本文的内容能够帮助读者更好地理解和使用 BeanShell,提升测试自动化的能力和水平。
- 作者:Yibin
- 链接:https://yibin.dev/article/d06c7c90-be0f-41c2-a6c8-3f247b61f553
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章










