我正在测试一个场景,其中一个用户向数据库添加了一个新用户,并且该新用户尝试登录。我需要能够运行的整个过程中,但登录尝试需要发生后,添加用户。
问题是由于某种原因,Cookie管理器无法从设置线程提供正确的会话ID,我不得不使用头管理器来插入Cookie。这意味着当新用户登录时,它将“中断”原始用户的登录会话,并且在一个新的运行中,它将导致它无法添加新用户,因为系统认为这是新用户登录,没有授权做以前用户应该做的事情。
我在想两个解决的办法。
- 将新用户的登录名放在不同的线程组中,该线程组将获得新的会话ID,但是:
- 我如何确保它将被绑定到运行的原始线程?简而言之:我需要确保一个线程创建另一个线程,并让它并行工作。
- 找到某种方法从头管理器中清除sessionID,在新用户登录之前调用它,这样它将请求一个新的sessionID。
import org.apache.jmeter.protocol.http.control.Header;
import org.apache.jmeter.protocol.http.control.HeaderManager;
HeaderManager headerManager = sampler.getHeaderManager();
if (headerManager != null) {
headerManager.add(new Header("HeaderName", ""));
}
我试过这样做,但它并没有清除HeaderName头的值,而是插入了一个新的Header,名为HeaderName,值为空。
import org.apache.jmeter.protocol.http.control.Header;
import org.apache.jmeter.protocol.http.control.HeaderManager;
HeaderManager headerManager = sampler.getHeaderManager();
if (headerManager != null) {
headerManager.add(new Header("HeaderName", ""));
}
1条答案
按热度按时间qnakjoqk1#
如果Cookie管理器没有从响应中捕获Cookie,则可能是无效的。您可以尝试使用限制较少的实现,如
netscape
和/或将CookieManager.check.cookies
属性设置为false
1.如果您想将cookie复制到另一个线程组或在其他地方使用它,您可以通过将
CookieManager.save.cookies
属性设置为true
,然后设置为convert JMeter Variable holding the cookie value into a JMeter Property,将cookie存储到JMeter变量中1.根据standard,允许重复的头,所以如果你想改变一个头的值,你需要先删除一个现有的头,如下所示: