Jmeter:将定期生成的提取值列表从一个HTTP请求动态传递到另一个线程组

pgx2nnw8  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(150)

我需要运行getDistributionIDs API,它将返回一个对象列表,(在JSON响应中),每个都有唯一的“distributionID”。我可以使用JSON提取器提取所有的“distributionID”,并将-1作为匹配号。我需要在一定的时间间隔后多次运行此API。每次调用它时,可能会也可能不会将distributionID作为响应的一部分返回,因为它是基于“sendPackage”API的处理而生成的。
现在,我想将所有这些ID传递给一个新的“shipmentComplete”API(必须使用多个线程运行),它将使用这些ID并标记发货完成。我必须将这些值作为路径变量传递,并且有多个并发线程。
示例:getDistributionIDs API返回以下ID:[abc,qrs,xyz]现在在我的shipmentComplete HTTP请求中,不同的线程应该从列表中获取一个Id,并将其绑定到URL的路径变量。
实现这一点的最佳方法是什么?如何确保每个线程都应该选择唯一的分发ID来标记它完成。此外,如何定期运行getDistributionIDs并存储分发ID,以便将其传递给下一个API。
作为第一个API的一部分,新的ID将定期生成。我希望在将下一组ID传递给第二个线程组之前,完全使用以前生成的ID。
我无法使用线程num函数${_P(ID${__threadNum},)}在其他帖子中提到,因为,threadnum和生成的ID数不相同。有时可能有10个ID,但我可能必须用3个线程运行后续的API。这意味着只会使用3个ID,反之亦然,如果只有2个ID,但线程数可以更多。在这种情况下,它将找不到该ID。
我很难让它工作。请帮助。

xzv2uavs

xzv2uavs1#

如果您需要将一些JMeter变量从一个线程组传递到另一个线程组,有几个选项:
1.使用Groovy代码将它们转换为属性,如

vars.entrySet().each { variable ->
    if (variable.getKey().startsWith('ID_')) {
        props.put(variable.getKey(), variable.getValue())
    }
}

然后使用__P()函数或Groovy代码进行访问。更多信息:Using JMeter Variables With Multiple Thread Groups
1.使用Inter-Thread Communication Plugin
1.使用Flexible File Writer将值写入文件,然后使用CSV数据集配置将其读回
1.将值写入数据库,然后使用JDBC Test Elements读取它们
1.等等
我们无法提出“实现这一点的最佳方法”,因为您的“将其绑定到URL的路径变量”节没有告诉我们任何信息。

相关问题