jmeter - 非 GUI 模式下的 JMeter 测试不可信
问题描述
GUI 上的测试脚本可以完美运行,但在非 GUI 模式下却不行。显示终端测试执行的图像
说明:我在测试计划中有 3 个线程组,其中第一个Thread Group
创建 3 个.csv
文件,并预计将 CSV 文件中的数据提供给second Thread Group
.
对于少数测试运行,非 GUI 模式效果很好,但是,像这样 [终端显示测试运行] 的测试间歇性地根本不创建CSV
文件,有时,第三个线程组根本不执行。
我注意到的问题是:
在非 GUI 测试期间,文件没有被创建,所以这就是下一个线程组无法获取和使用
CSV
文件中的变量的原因,而且第二个可能是:我在 ${__setProperty(prop_folder_Path,${File_Path})} 中保存文件夹和文件路径并获取道具。
${__property(prop_folder_Path)}
在另一个线程组中 - >有时这个属性函数不起作用并且文件保存在/bin
目录中有没有办法
${__property(prop_folder_Path)}
在 BeanShell POSTProcessor 中使用价值?
我相信任何在 GUI 中有效的东西在非 GUI 中也应该同样有效,对吗?
我刚刚注意到在非 GUI 中运行测试时,输出文件正在 /bin 文件夹中创建,如此处所示
任何解决此问题的建议。谢谢
解决方案
我的期望是您的“.csv”文件创建以某种方式失败,因此第二个线程组由于缺少文件而无法运行。
JMeter 没有任何内置功能可以将某些内容写入文件,因此我认为您使用不起作用的JSR223 脚本实现了一些自定义逻辑。原因可能在于:
- 如果您从另一个文件夹运行 JMeter,可以在不同的位置创建 .csv 文件,请尝试使用完整路径以防万一。
- 非 GUI 模式往往比 GUI 模式快,因此可能是多线程问题的情况,即当多个线程试图同时将数据写入同一个文件并发生冲突或产生格式不正确的数据时。
在这两种情况下,答案都将存在于jmeter.log文件中,检查它是否有任何可疑条目并修复原因。
一般来说,使用文件在线程组之间传递数据并不是最好的主意,我建议改为在内存中进行,例如:
在第一个线程组中,使用__setProperty()函数将存储在 CSV 文件中的数据转换为 JMeter 属性,例如:
${__setProperty(foo,bar,)}
在第二个线程组中使用__P() 函数读取数据,如:
${__P(foo,)}
推荐阅读
- python - 从另一个 api 烧瓶中获取 json api 数据
- apache-spark - Pyspark:如何收集纱线集群中指定单个文件中的所有工作日志?
- firebase - 如何使用颤振从云 Firestore 中删除特定文档?
- python - 熊猫在 customerEmail 列上的 MERGE 重复
- php - 如何使用 WooCommerce Core 在新产品上设置自定义产品元?
- angular - 如何使用不同的数据重新启动组件?
- kubernetes - Kubernetes:本地存储多个节点
- javascript - 无法在反应挂钩中使用/更新输入值,该输入值将从随机图像生成器 url 添加到图像 src 属性
- excel - VBA - 多次复制特定范围的列的代码优化
- php - 如何使用 Eloquent 在 Laravel 中保存嵌套数据(无需过多迭代)