weixin_44669768 2025-02-17 14:27 采纳率: 0%
浏览 25

为什么Jmeter线程组Same user on each iteration勾选不生效

如图,一个线程循环3次,勾选Same user on each iteration,但是执行时,每次都是从CSV文件里取前三个值分别请求,按道理勾选了Same user on each iteration不应该每次循环都取同样的(第一个)值吗?有懂的同学吗,求指点迷津

img

CSV文件里有若干条数据>1

img

每次取值

img

img

img

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-02-17 14:32
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    JMeter线程组的"Same user on each iteration"选项是指在每个循环中使用同一个用户的cookie和session信息。然而,在你的情况下,JMeter可能并没有正确地使用同一个用户的cookie和session信息。

    这是因为JMeter的CSV数据源读取是异步的,JMeter会在读取CSV文件时创建一个新的用户,而不是使用同一个用户。为了解决这个问题,你可以尝试以下几种方法:

    1. 使用JMeter的User Defined Variables功能来存储用户信息,然后在每个循环中使用同一个用户的信息。
    2. 使用JMeter的HTTP Cookie Manager功能来管理cookie信息,然后在每个循环中使用同一个用户的cookie信息。
    3. 使用JMeter的HTTP Session Manager功能来管理session信息,然后在每个循环中使用同一个用户的session信息。

    以下是一个使用User Defined Variables功能来解决这个问题的示例:

    1. 在你的线程组中添加一个User Defined Variables元素。
    2. User Defined Variables元素中添加一个变量,例如username,并将其设置为从CSV文件中读取的用户名。
    3. 在每个循环中使用同一个用户的信息,可以使用username变量来访问用户信息。

    例如:

    ${__V(username)}
    

    这将使用username变量来访问用户信息。

    代码示例

    以下是一个使用User Defined Variables功能来解决这个问题的示例代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
      <elements>
        <Element guiclass="CSVDataSetGui" testclass="CSVDataSet" testname="CSV Data Set" enabled="true">
          <stringProp name="filename">users.csv</stringProp>
          <stringProp name="delimiter">,</stringProp>
          <stringProp name="quote">"</stringProp>
          <boolProp name="ignoreFirstLine">true</boolProp>
        </Element>
        <Element guiclass="UserDefinedVariables" testclass="UserDefinedVariables" testname="User Defined Variables" enabled="true">
          <stringProp name="username">${__CSV(username, 0)}</stringProp>
        </Element>
        <Element guiclass="HTTPSamplerProxy" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
          <stringProp name="uri">http://example.com</stringProp>
          <stringProp name="method">GET</stringProp>
          <stringProp name="headers">username=${username}</stringProp>
        </Element>
      </elements>
      <stringProp name="tname">Thread Group</stringProp>
      <boolProp name="serializeUnrecognizedProperties">true</boolProp>
    </ThreadGroup>
    

    在上面的示例代码中,我们使用CSV Data Set元素来读取用户名,然后使用User Defined Variables元素来存储用户名,并在HTTP Request元素中使用用户名来访问用户信息。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月17日