Jmeter中的302重定向&自定义参数&csrfmiddlewaretoken接口实战!

Jmeter中的302重定向&自定义参数&csrfmiddlewaretoken接口实战!,第1张

前言

1公司目前还有几个web项目是前后端不分离的,返回的内容不是那种json格式,返回的是一个HTML页面。

2并且有些参数是隐藏在html里面的,需要先从html页面中取出隐藏参数(具体参数视项目而定),如:

__VIEWSTATE 、__VIEWSTATEGENERATOR

3__VIEWSTATE 、__VIEWSTATEGENERATOR是每次在浏览器上打开登录首页的时候,会自动生成一个隐藏(hidden)的参数。

场景案例

1登录接口需要用到隐藏参数

2302重定向的登录接口

环境

1JMeter51

步骤:

1在登录之前我们必须先获取到:__VIEWSTATE 、__VIEWSTATEGENERATOR 这个2个参数的值。

先访问首页 >

在进行接口测试的时候,很多时候需要将上一个请求的结果作为下一个请求的参数带入其中,比如说登录后的token。

jmeter中,有两种方法可以实现此功能:

针对返回格式为json的,推荐使用json path 提取器。

首先新建一个线程组,然后分别添加两个>

       在实际项目的测试中,往往会遇到业务流程必须是先登录再执行后续相关 *** 作的业务场景。有的登录请求中会用到token的验证,token的实效时长设定的比较短,项目组又不愿意去修改实效时长。此时在测试稳定性的过程中必须在token实效前重新进行一次登录 *** 作。

        目前使用jmeter的测试过程中未想到其他的好方法,暂时的实现方法如下:

登录 *** 作放到仅一次控制器中,在仅一次控制器中使用beanshell脚本获取当前的时间,仅一次控制器后面增加beanshell脚本判断运行时长,脚本后面增加if控制器判断运行时长,若超过条件则重新进行登录 *** 作,并在if控制器下增加beanshell再次获取当前时间戳。

        具体jmeter脚本实现如下:

1、脚本结构

2、仅一次控制器中beanshell sampler获取当前时间内容:

long timestart = SystemcurrentTimeMillis()/1000;

String timestartString = StringvalueOf(timestart);

varsput("timestartString",timestartString);

3、Beanshell 判断运行时长脚本内容:

long timesNow = SystemcurrentTimeMillis()/1000;

String aaa = varsget("timestartString");

long timestartLong = LongparseLong(aaa);

long bbb = timesNow-timestartLong;

varsput("bbb",StringvalueOf(bbb));

//loginfo("生成数值测试cccccccccc"+bbb);

4、if逻辑控制器中内容:jexl3函数的使用可自行查找。

5、if控制器下的beanshell sampler再次获取时间戳内容:

long timestart = SystemcurrentTimeMillis()/1000;

String timestartString = StringvalueOf(timestart);

varsput("timestartString",timestartString);

//loginfo("生成数值测试cccccccccc");

        以上是针对登录token实效后重新刷新或者登录的实现方法的记录,后续获取其他同学有更好的方法可分享学习。

在用Jmeter进行业务流程接口测试的时候,因为有多个线程组,但是所有的接口都依赖于登录接口。原先处理方式是每一个线程组里都添加一个登录接口,但是后面发现这样不是很友好,每次执行一个线程组都要调一次登录接口。所以想把登录接口提出来,单独放在一个线程组里。

实现流程大概这样:

一、建一个线程组,将登录接口添加进来

二、添加一个BeanShell Sample

里面写上提取cookie值的脚本,大致如下图

(因为测试的登录接口,响应头中返回的数据中有两个值所以分别提取两次)

三、完后,添加一个后置处理器,将提取到的值设置为全局变量

四、然后在其它线程组中添加cookie管理器,并添加引用上面设置的全部变量

问题开始出现:

所有配置完成后,开始执行,结果查看发现除登录外的其他线程组中的接口全部请求失败,原因“”用户未登录“”。

然后一通检查,添加日志,将过程都打印了出来,发现没什么问题。

然后又又又检查了一遍,发现在测试计划最外层添加了一个cookie管理器(如果最外层添加了cookie管理器,优先级要比线程组内的高,导致最终没有走线程组内设置的值)。将这个cookie管理器禁用后,成功调通。

注意:$datatoken的值设置得根据登陆后拿到的返回值的json的格式来设置

注意: setProperty前面是两个下划线

都是设置完成后即可进行测试!!!

1,需求:需要提取系统登录状态下的id_token

2,打开jmeter51,添加线程组→>

以上就是关于Jmeter中的302重定向&自定义参数&csrfmiddlewaretoken接口实战!全部的内容,包括:Jmeter中的302重定向&自定义参数&csrfmiddlewaretoken接口实战!、jmeter之有依赖关系的接口处理、Jmeter 将上一个请求的结果作为下一个请求的参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9439894.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存