Cookies JMeter-更改Cookie';测试过程中的s值?

Cookies JMeter-更改Cookie';测试过程中的s值?,cookies,jmeter,Cookies,Jmeter,我已经在JMeter*(版本2.13)中创建了一个测试计划。我能够在计划中添加Cookie管理器,并在HTTP请求之间保留Cookie,这很好 我现在要做的是,如果可能的话,从一开始就保留一个Cookie(*称为“JSESSIONID”),然后再保留另一个Cookie(*我们称之为“MYID”),它可以在测试过程中修改 我的第一次尝试如下: +Thread Group -HTTP Request Defaults -HTTP Cookie Manager +HTTP Re

我已经在JMeter*(版本2.13)中创建了一个测试计划。我能够在计划中添加Cookie管理器,并在HTTP请求之间保留Cookie,这很好

我现在要做的是,如果可能的话,从一开始就保留一个Cookie(*称为“JSESSIONID”),然后再保留另一个Cookie(*我们称之为“MYID”),它可以在测试过程中修改

我的第一次尝试如下:

+Thread Group
    -HTTP Request Defaults
    -HTTP Cookie Manager
    +HTTP Request - Goto HomePage
        -HTTP Cookie Manager - Set MYID="server_1"
    +HTTP Request - Load Login Page
        -HTTP Cookie Manager - Set MYID="server_2"
....and so on for about 3 more HTTP Requests....
但是,这样做只会保留初始Cookie管理器捕获的原始Cookie,该管理器设置在threadgroup元素的正下方

Apache的网站警告说:

+Thread Group
    -HTTP Request Defaults
    -HTTP Cookie Manager
    +HTTP Request - Goto HomePage
        -HTTP Cookie Manager - Set MYID="server_1"
    +HTTP Request - Load Login Page
        -HTTP Cookie Manager - Set MYID="server_2"
....and so on for about 3 more HTTP Requests....
如果采样器的作用域中有多个Cookie管理器,则当前无法指定要使用哪个Cookie管理器。此外,存储在一个Cookie管理器中的Cookie对任何其他管理器都不可用,因此请小心使用多个Cookie管理器

我做的另一个测试与第一个测试类似,只是我在测试开始时添加了一个用户定义变量元素,该元素将MYID Cookie的变量设置为一台服务器,然后大约2或3个HTTP请求关闭,我有第二个用户定义变量元素,这次将变量设置为另一台服务器。但是,在阅读了更多关于用户变量的内容之后,JMeter只在测试开始时读取一次用户定义的变量。因此,我最后设置的变量将与我在第二个用户定义变量部分中设置的变量保持一致。因此,这种方法在测试期间无法更改Cookie值

我还从ApacheJMeter的网站上读到了这篇文章,这里似乎最接近我想要实现的目标。但是,从他们的示例来看,似乎是为了在测试开始之前修改变量,比如从命令行设置变量

摘要:
总而言之,我试图实现的是用两个cookie发送我的HTTP请求:
1. JSESSIONID
2. MYID
其中JSESSIONID从一开始就保持不变,而MYID是我想在测试期间改变它的值*(如果可能的话,可以多次)


如果这不合理,请告诉我,我将尝试进一步解释。 如有任何想法或建议,将不胜感激

提前感谢,

Matt

您可以使用Beanshell脚本进行cookies操作,如下所示:

  • 在HTTP请求中添加一个
  • 将以下代码放入预处理器的“脚本”区域:

    import org.apache.jmeter.protocol.http.control.Cookie;
    导入org.apache.jmeter.protocol.http.control.CookieManager;
    CookieManager=sampler.getCookieManager();
    for(int i=0;i
  • 上述代码将通过直接调用类将“MYID”cookie值替换为“foo”JMeter变量值(有关所有可能的方法和字段,请参阅API文档)


    有关ApacheJMeter中Beanshell脚本的高级信息,请参阅指南。

    感谢您的回复,非常感谢!我会尝试一下,然后用我的结果发回。所以我将它添加到每个“HTTP请求”元素中,是吗?当我运行测试用例时,我会在日志查看器中不断看到错误和警告。我看到了以下内容:
    ERROR-jmeter.util.BeanShellInterpreter:调用bsh方法时出错:eval源文件:内联评估:“”import org.apache.jmeter.protocol.http.control.Cookie;导入org.apache.jmeter….'':无法访问对象org.apache.jmeter.protocol.http.control上的字段getCookieCount。CookieManager@30593b53警告-调用bsh方法时出错:eval源文件:内联计算:“”import org.apache.jmeter.protocol.http.control.Cookie;导入org.apache.jmeter….'':无法访问对象org.apache.jmeter.protocol.http.control上的字段getCookieCount。CookieManager@30593
    对于连续的评论,我深表歉意,但是错误消失了。我有一个
    log.info(“打印一些字符串”)行在那里,一旦我删除它,错误和警告行从日志查看器中消失。。。奇怪的更奇怪的是,我在测试之前已经注释掉了log.info()行,但它仍然打印到日志中。我使用“/”作为注释字符。但是,删除注释掉的log.info()行后,错误停止显示。