Jmeter On Demand 在测试期间触发任何特定的 API

Jmeter On Demand triggering of any particular API during a test

我有一个场景,其中有一个特定的 API 以下面的方式生成令牌。假设它现在正在生成 20 个令牌。我将所有这些令牌值传递到接下来的 20 个后续请求中。

{

“数据”:{ "requestTokens" : [ "9FDE794DD00E4A09122343BDCAF214E9", "616C5DFFC1234516A925824AEA6EFE9F", "7A8C507EC1DF4AD88E0912345E1DB409", "763C32CF67899946B6BC946949BD1344", "3C143F2FC25E495012345500E0F343DF", "3FD78335C763420B1234574061D9417F", "C43C368A1E612345AB17D2BA2693BEAF", "56E8FA9036D3486123451DE3237004DC", "5867B8E399FB4E12345626337D0E143C", "D06B30BDEAFC4A7D8618BF67712345DB", "F795258D390D4812345EB62C83BEFC58", " F0829D861234560392DE432E121B3CD4", "C8B9D5E6BE6A465FB91B0123459FBA9A", "4169D93D97204123457BA5A98C914D27", "784809E5BCBF4F123459D7D848AD67CE", "D0BFDCDC13994C0123455B2B110C35F9", "4F59619BBEDE4FE812345EA14C5E785", "E3942AE182214605BE91234595D95C18", "2005C506659C425EAD2022446123459B", "FE716E2A13A74C759C12345AED5AD54C" ] } }

所以这个值 20 是动态的。现在,作为解决方法,我使用 JSON 提取器将这 20 个值捕获为数组并传递这些值。但是明天如果这个值改为 10,我的脚本就会失败。因为它会生成 10 个令牌,而我在第十次请求后就没有令牌了。因此,根据需要,我们必须触发生成令牌并将其传递给后续请求的特定 API。有什么方法可以解决这个问题吗?

您可以创建一个 JSON Extractor,其配置如下:

  • 创建变量的名称 = tokens
  • JSON 路径表达式 = $.data.requestTokens[*]
  • 匹配号=-1

这会将您的所有标记放入名为 tokens_1tokens_2tokens_3 等的变量中。不管他们有多少。

接下来创建一个 ForEach Controller,其配置如下:

  • 输入变量前缀=tokens
  • 输出变量=token

这将遍历上一步中提取的所有标记。您将“后续”步骤添加到此控制器。您可以在该循环内的步骤中将循环变量引用为 ${token}

提取和构建下一个请求主体都可以用JSR223 PostProcessor in Groovy语言

完成

由于您没有分享响应数据,我无法提供代码片段,同时您可以熟悉以下资料: