2017-07-25 65 views
0

我使用jMeter 3.2编写一些测试。我有一个带有测试帐户信息的CSV文件。每行包含用户的登录信息。每个用户需要请求在以后的请求中使用的令牌。对CSV中的每个元素执行请求,而不是每个用户

我的测试计划:

Test plan

的获得令牌请求检索令牌。登录请求登录到用户并返回另一个令牌。选择客户卡选择一个客户并返回最终的令牌。对于postprocesser的代码是(我不是在这个经历,所以任何建议表示赞赏):

import org.json.simple.JSONObject; 
import org.json.simple.parser.JSONParser; 

// Check if our map already exists 
if (props.get("map") == null) { 

    JSONObject obj = new JSONObject(); 
    obj.put("${department}", new String(data)); 
    log.info("Adding department to map. Department: ${department}. Token: " + new String(data)); 

    props.put("map", obj.toJSONString()); 

} else { 

    // Retrieve the current map 
    map = props.get("map"); 
    JSONParser parser = new JSONParser(); 
    JSONObject jobj = (JSONObject) parser.parse(map); 

    // Add the new department (with it's token) to the map 
    jobj.put("${department}", new String(data)); 
    log.info("Updating map for department. Department: ${department}. Token: " + new String(data)); 

    props.put("map", jobj.toJSONString()); 
} 

尝试1: 我设置了一个曾经只控制器登录用户和检索令牌。

现在让我说我的CSV文件中有10行,但在我的测试中,我只想使用3个用户并循环10次。会发生什么是3个登录请求被发送(每个用户一个)。这适用于第一次迭代。在2次迭代中,3个线程将使用没有令牌的行4-6,从而失败。

尝试2: 我正在使用if控制器来检查令牌是否已设置。我根本没有这个工作。我向控制器中添加了一个beanshell预处理器,我试图检索该令牌。如果它为空或空,我将令牌变量设置为“”。在if控制器中,我检查这个值。但是,是的。没有运气。

尝试3 在Beanshell中检查是否已经创建了令牌。如果没有,请调用检索它的测试片段。不幸的是,这似乎不可能。

可能值得注意的是,我将我的令牌存储在属性中,以便所有线程都可以访问它。

如果您需要更多信息,请让我知道。

+0

你能展示你的测试计划吗? – user7294900

+0

我已经添加了我的测试计划 – Casper

+0

什么是数据?你如何获得数据并期望它成为令牌?你怎么在BeanShell中调用测试片段? – user7294900

回答

0

我想出了一个解决方案。实质上,我试图做的是为数据文件中的每一行存储一个标记。

我这样做是通过创建一个在其他线程组之前执行的setUp Thread Group来实现的。在此我循环访问数据并为每个数据存储一个令牌。现在所有其他线程组都可以在运行时访问这些线程组。

相关问题