JMeter:如何基于列值读取csv文件中的特定行数据并将该列的值传递给采样器?

问题描述 投票:0回答:2

我是Jmeter的新手,正在做POC对Web应用程序进行负载测试。

我想做什么:我总共有4个用户登录名(外科医生)。每个登录名与“ n”名患者关联。我已经创建了2个CSV文件1.一个带有用户登录名和密码的外科医生2.另一个CSV文件,其中包含与该患者相关联的PatientName,PatientID和Surgeon,如下所示。

PatientName,PatientId,loginNamePa1,PID1,用户1Pa2,PID2,用户1Pa3,PID3,用户1Pa4,PID4,用户1Pa5,PID5,用户2Pa6,PID6,用户2Pa7,PID7,用户3Pa8,PID8,user4

我的场景:

  1. 以用户身份登录。
  2. 根据每个患者仪表板的关联导航。
  3. 退出应用程序。

我的测试计划

线程组(4个用户,启动时间为1秒,1个循环)-csv1(使用用户名,密码)-登录页面并导航到主页-运行时控制器(承受一定时间的负载)-While Loop(在已登录的外科医生/用户的患者仪表板之间循环)--- CSV2(数据如上所示)----导航到仪表板----导航到主菜单-退出应用程序

我想实现的目标:

我想使用单线程组并同时为所有4个用户运行它。在此过程中,一旦用户登录,用户就应该只从CSV中关联的那些患者数据。例如:当Thread1以User1登录身份运行时,他应该只能循环遍历Pa1,Pa2,Pa3,Pa4用户当线程2通过User2登录运行时,用户应仅读取Pa5,Pa6数据。

像这样,每个用户登录名都只能按照上述关联选择这些用户。有什么办法可以使用单个CSV2文件并完成此任务?这样我就不必用n个CSV文件创建n个登录数的n个线程,每个CSV文件都包含特定于用户登录的数据。

csv jmeter performance-testing
2个回答
0
投票

根据JMeter Test Elements Execution Order

0。配置元素

  1. 预处理器

  2. 计时器

  3. 采样器

  4. 后处理器(除非SampleResult为null)

  5. Assertions(除非SampleResult为null)

  6. 侦听器(除非SampleResult为null)

成为Configuration Element CSV数据集配置一次且之前没有其他操作,因此您将无法使用第二个CSV数据集配置中的第一个CSV数据集配置中的当前变量。

该解决方案使用__CSVRead() function代替,JMeter函数在测试计划中出现的位置进行评估,因此您可以在其中使用任何硬编码值或JMeter变量或其他函数。

更多信息:How to Pick Different CSV Files at JMeter Runtime


0
投票
1. CSV Data Set Config for Surgeon credentials (loginNameSurgeon & Password)
2. Login Request (take first surgeon credentials from CSV) 
3. While ${__jexl3("${loginNameSurgeon}" != "${loginName}")} 
    a. CSV Data Set Config for patient data w.r.t surgeons (PatientName,PatientId,loginName)
    b. If Controller - ${__jexl3("${loginName}" != "<EOF>")}  // to check if we have any more loginName left
    c. Dashboard request
    d. Debug Sampler // Just to validate if the variables are in place.
4. Logout request   
© www.soinside.com 2019 - 2024. All rights reserved.