如何在 JMETER 中将环境属性 json 文件读取到 UDV
Posted
技术标签:
【中文标题】如何在 JMETER 中将环境属性 json 文件读取到 UDV【英文标题】:How to read Environment properties json file to UDV in JMETER 【发布时间】:2018-10-10 14:52:34 【问题描述】:我有一个关于环境属性的问题。 我使用 JMeter 来测试 Vertica + Redis + HTTP 请求。每天我都会获得新的 ENV。意思是新的干净的数据库。
问题是我在 env 文件中获得了新的主机和端口,例如位于 c://envproperties.json 下
有没有办法在测试计划开始运行之前读取这个 json 并将 env 属性传递给 Jmeter 中的 UDV,而不是完全自动化的过程?从今天开始每天都需要手动操作。
[][环境属性文件]
[][Jmeter中用户定义的变量]
【问题讨论】:
【参考方案1】:您可以使用带有文件协议的 HTTP 采样器来获取 Json 文件,并使用后处理器 Json 提取器来提取值 请参阅屏幕截图以获取更多信息 Testplan
您将收到类似this 的回复 然后你可以使用JSon Extractor提取值。
您可以关注此blogs 以获取有关 JMeter 的更多信息
【讨论】:
嘿@Rohit 问题是我有 200 个使用相同属性的测试,根据您的解决方案,我需要为每个线程组执行 200 次此过程。他们是一种只做一次并让所有线程组都知道的方法吗?例如,该线程组将在所有其他测试之前执行吗?我想补充一点,所有测试同时运行。 您可以使用 setProperty 方法将一个变量从一个线程组共享/传递到另一个线程组,请参阅此处的手册jmeter.apache.org/usermanual/best-practices.html#bsh_variables 并参考问题***.com/questions/707832/… 嘿 Rohit 问题是我希望所有线程组都同时运行。所以我不认为可以在线程之间传递,因为它们是一起运行的。【参考方案2】:您可以使用您选择的任何后处理器 Beanshell、JSR223 等通过第一个线程组以键值对或两列(即变量名、变量值)的形式从 json 中提取 CSV 中的值。
然后,第二个线程组可能有你计划的其余部分以及“jp@gc - Variables From CSV File”来获取所需的值,也可以存储在系统属性中,如下所示。
-1st Thread Group -- 从 json 中提取值并将其放入 csv 中。
-
HTTP 请求——如图所示从 c 盘获取 json
正则表达式提取器 - 获取所需的变量
JSR223 后处理器 - 以键值对的形式将变量写入 CSV。
-2nd Thread Group -- 它使用“jp@gc - CSV 文件中的变量”引用 csv,它为以下所有请求提供变量。
选中测试计划中的复选框以连续运行线程组。 我希望这会有所帮助。
【讨论】:
我还是不明白,这个过程是在所有线程组启动之前发生的吗?我的配置文件是 json,在示例中如何设置在 c 驱动器中获取变量的位置?我需要在所有线程组开始之前获取所有变量的过程。你能提供一步一步的解决方案吗?他们是通过 JSR223 预处理器设置系统属性的方法吗?我会使用第一个预处理器吗? 更新了我的答案...请检查它是否对您的方案有帮助....在我的计划中,我正在获取环境。来自 csv 而不是来自 UDV 的变量。 对不起,但还是不明白,你提到了第一个线程来做这个或那个,我有 100000 个测试,每个测试都是一个线程组,我希望在发生任何事情之前 Jmeter 将获得 ENV 属性然后一起处理所有测试。不一一。他们是不是告诉 jmeter 运行第一个线程而不是其他所有线程?我要做的就是让Jmeter知道DB端口和IP在哪里, @Bastian..第一个线程组将放置所有需要的配置。 csv 中的值...然后第二个线程组将获取所有请求。来自第一个线程组生成的 csv 的值。您的第二个线程组将配置所有 100000 个线程。以上是关于如何在 JMETER 中将环境属性 json 文件读取到 UDV的主要内容,如果未能解决你的问题,请参考以下文章