我正在测试一个具有以下流程的Web应用程序:
在我的JMeter测试计划中,我添加了一个cookie管理器,我可以从登录请求的响应头中提取此访问令牌。我想将此访问令牌设置为测试计划的cookie。
我在BSF PostProcessor中提取访问令牌后添加了这个: vars.put('COOKIE_access_token',actual_token); ,它在调试采样器中被视为一个cookie变量。
但是登录后的后续请求在其cookie数据中没有此访问令牌,因此会再次重定向到登录页面。
如何将此令牌设置为将用于所有进一步请求的cookie?
答案 0 :(得分:3)
定义变量不会添加cookie本身。您需要将Cookie插入Cookie管理器才能使其正常工作,例如:
将以下代码放入预处理器"脚本"面积:
function mapping(list, callback)
{
var txtObj = []
list.forEach(function(val)
{
try { txtObj.push(mapred(fs.readFileSync(val, 'utf8'))) }
catch(err) { callback(err) }
})
callback(null, txtObj)
}
使用您自己的值替换import org.apache.jmeter.protocol.http.control.Cookie;
sampler.getCookieManager().add(new Cookie("access_token", "actual_token", "domain", "path", true, Long.MAX_VALUE));
,domain
,path
(代表"安全")和true
(过期)。
有关以编程方式操作Cookie的示例,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component。
答案 1 :(得分:0)
import org.apache.jmeter.protocol.http.control.Cookie;
sampler.getCookieManager().add(new Cookie("access_token", "actual_token", "domain", "path", true, Long.MAX_VALUE));
此代码确实有效。这对我有帮助。
谁想要在请求cookie数据中传递缺少的cookie(会话或任何cookie),而不是添加标头管理器,请在bean shell预处理器中使用以上代码。
谢谢DMITRI T