每次运行线程的唯一变量

时间:2017-03-23 08:55:04

标签: jmeter automated-tests load-testing

我有一个jmeter脚本来测试用户通过多种形式的旅程。

理想情况下,每次旅行的电子邮件地址都是唯一的,但事实证明很难实现这一目标。

我有一个用户定义的电子邮件变量;

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="big-wrap">
  <div class="logoburger">
    <div class="burgermenu">
      <img class="burger" alt="menu-alt.svg" src="http://lorempixel.com/200/200/food">
    </div>
    <div class="search">
      <div id="search-icon"></div>
      <form class="ui-widget" method="POST" action="../">
        <input id="tags" placeholder="Search.." name="search" class="ui-autocomplete-input" autocomplete="off">
      </form>
    </div>
    <div class="logo">
      <a class="homepage" href="/">
        <img src="http://lorempixel.com/50/50/business" alt="Logo">
      </a>
    </div>
  </div>
  <div class="big-content"></div>
</div>

然后用BeanShell PreProcessor创建唯一ID;

${__V(${__UUID()}${__RandomString(20,abcdefghijklmnopqrstuvwxyz,)}_jmeter@my-co.com)}

最后,在POST数据中,我一直在定义;

int threadNo = ctx.getThreadNum()+1; //to get the thread number in beanshell
int base = 35000;
int uniqueId = threadNo + base;
vars.put("uniqueId", Integer.toString(uniqueId));

但是如果我想运行一个长测试,线程循环所以我相信线程号是相同的,所以电子邮件不会改变。或者至少在较长时间的测试中看到的403错误表明了这一点。

是否可以在_${__threadNum}.${uniqueId}.${Email} 或POST的数据中使用循环计数或其他标识符?

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

然而HTTP Status Code 403代表&#34;禁止&#34;

  

服务器理解请求,但拒绝履行请求。      授权无效,请求不应重复。      如果请求方法不是HEAD并且服务器希望进行      公开为什么请求没有得到满足,它应该描述      实体拒绝的原因。如果服务器不希望      将此信息提供给客户端,状态代码404      (未找到)可以代替使用。

所以你的问题似乎与其他东西有关