1、如果(if)控制器:如果控制器下面的表达式最终取值必须是true或者false。假设我们想控制请求百度的HTTP请求是否执行,用如果控制器来实现如下:
1.1、创建线程组如下:
![](https://img.haomeiwen.com/i14269037/9ac49330614308d7.png)
1.2、其中,用户定义的变量test设置为true,如下:
![](https://img.haomeiwen.com/i14269037/17dd2fb21676cf90.png)
1.3、如果控制器引用用户定义的变量test,其设置如下:
![](https://img.haomeiwen.com/i14269037/8b510f038bf4647e.png)
1.4、运行后察看结果树,可以看到成功访问了HTTP请求:
![](https://img.haomeiwen.com/i14269037/d1dca717bd41662a.png)
1.5、如果想控制HTTP请求不被访问,那么我们只要把test的值设置为false就好:
![](https://img.haomeiwen.com/i14269037/c2eaedcedbda0f0c.png)
1.6、运行后察看结果树,发现HTTP请求并没有被访问:
![](https://img.haomeiwen.com/i14269037/c04c71a25323b2a5.png)
2、循环控制器:控制循环执行的次数,如果线程组也有循环次数,则JMeter是执行两层循环。比如,我们在线程组里面设置:线程数为1,循环次数为2,然后在循环控制器里面循环次数输入2,那么总执行次数为4:
2.1、创建线程组如下:
![](https://img.haomeiwen.com/i14269037/c60f34755e4fd1c2.png)
2.2、循环控制器设置如下:
![](https://img.haomeiwen.com/i14269037/9b9641dd6e4ef9f8.png)
2.3、运行线程组察看结果树如下:
![](https://img.haomeiwen.com/i14269037/1019f2c653e5daf3.png)
3、while控制器:其节点下的元件将一直运行直到while的条件为false,可以输入表达式或者变量。
3.1、线程组设置如下:
![](https://img.haomeiwen.com/i14269037/61b5bba19726c4e7.png)
3.2、添加while控制器如下:
![](https://img.haomeiwen.com/i14269037/06032a8c53f5dcd2.png)
3.3、执行线程组可以看到HTTP请求一直在请求中,除非你手动stop:
![](https://img.haomeiwen.com/i14269037/dfe8cfeb09cfbc86.png)
4、ForEach控制器:循环遍历一组相关变量的值。 将取样器添加到ForEach控制器时,每个样本都会执行一次或多次,其中在每个循环期间变量都有一个新值。 输入应包含多个变量,每个变量都用下划线和数字扩展。 每个这样的变量都必须有一个值。假设我们想在百度检索java、python、php、c++,则你可以这么设置:
4.1、新建线程组如下:
![](https://img.haomeiwen.com/i14269037/75f1bc33aede34d8.png)
4.2、用户定义的变量如下:
![](https://img.haomeiwen.com/i14269037/61a763c3bbc1a7c6.png)
4.3、ForEach控制器的设置如下,索引坐标0,1,2,3,则开始循环字段就为-1,结束循环字段就为3:
![](https://img.haomeiwen.com/i14269037/d71a6f3a26964bb2.png)
4.4、运行线程组察看结果树如下,我们可以看到检索了java、python、php和c++,共4个请求:
![](https://img.haomeiwen.com/i14269037/93975aba78e4a540.png)
5、交替控制器:其节点下的取样器会交替执行。
5.1、新建线程组如下:
![](https://img.haomeiwen.com/i14269037/cf50a2f264b35bf7.png)
5.2、交替控制器控制HTTP请求1和HTTP请求2,则执行线程的时候,HTTP请求1和HTTP请求2就会交替执行:
![](https://img.haomeiwen.com/i14269037/9be418dfe309dc02.png)
6、仅一次控制器:此控制器下的子元件只运行一次,即使把仅一次控制器放在循环控制器下面 ,也只运行一次。我们在模拟请求时,有时只需要登录一次,就可以把登录的部分放在仅一次控制器下面。
7、随机控制器:其节点下的元件会随机运行,与交替控制器不一样的是,其节点下的元件运行顺序随机。
7.1、新建线程组如下:
![](https://img.haomeiwen.com/i14269037/b6fb81edbb1dc90c.png)
7.2、随机控制器控制HTTP请求1和HTTP请求2,则执行线程的时候,HTTP请求1和HTTP请求2就会随机执行:
![](https://img.haomeiwen.com/i14269037/82f0a2f7a7e9d105.png)
8、随机顺序控制器:子节点都会执行,但是其节点的执行顺序是随机的。
8.1、新建线程组如下:
![](https://img.haomeiwen.com/i14269037/3813bed1ce8c4071.png)
8.2、随机顺序控制器控制HTTP请求1和HTTP请求2,则执行线程的时候,HTTP请求1和HTTP请求2就会随机顺序执行:
![](https://img.haomeiwen.com/i14269037/09e119521b5eb92f.png)
9、Runtime控制器:用来控制其子元件的执行时长 。
9.1、新建线程组如下:
![](https://img.haomeiwen.com/i14269037/59f065549bf86dd2.png)
9.2、Runtime控制器控制HTTP请求1,我设置了3秒,则HTTP请求1就会执行3秒后,再执行HTTP请求3:
![](https://img.haomeiwen.com/i14269037/b02f5d3672c14f8d.png)
10、吞吐量控制器:用来控制其下子元件的执行次数,并无控制吞吐量的功能。可以设置Total Executions和Percent Executions。Total Executions,按吞吐量的值来指定执行次数,此时Per User 与Total Executions一起影响执行次数(一般来说选择Total Executions就不要勾选Per User);Percent Executions,按执行次数的百分比来计算执行次数,此时吞吐量的取值是0~100,Per User是否勾选对Percent Executions没有影响。
![](https://img.haomeiwen.com/i14269037/27bbe21ded2af239.png)
10.1、新建线程组如下,理论上要执行20次:
![](https://img.haomeiwen.com/i14269037/18e5932e4de4fffc.png)
10.2、吞吐量控制器控制HTTP请求1,设置吞吐量为3:
![](https://img.haomeiwen.com/i14269037/83fcac54191c30b0.png)
10.3、运行线程组察看结果树如下,看到只执行了3次:
![](https://img.haomeiwen.com/i14269037/9037142de15a4789.png)
11、Switch控制器:条件控制器,根据switch value执行元件,从0开始计算。
11.1、新建线程组如下:
![](https://img.haomeiwen.com/i14269037/f0e26b3e8de7b9c2.png)
11.2、Switch控制器控制HTTP请求1、HTTP请求2和HTTP请求3,switch value设置为1,那么就是执行HTTP请求2:
![](https://img.haomeiwen.com/i14269037/67b4e3e601098c6d.png)
11.3、运行线程组察看结果树如下:
![](https://img.haomeiwen.com/i14269037/ddc51c0ca2b9502b.png)
参考链接:https://www.cnblogs.com/suim1218/p/9257272.html
![](https://img.haomeiwen.com/i14269037/de97a40b54cb0074.jpg)
网友评论