Jmeter中User Defined Variables(UDV)和HTTP Header Manager使用

Jmeter测试时需要区分不同的环境,想用If Controller进行判断,测试环境时User Defined Variables(UDV)变量赋值platfom=test,正式环境时User Defined Variables(UDV)变量赋值platfom=pro,结果每次udv都被覆盖,但HTTP Header Manager正常,配置如下:

 

 运行后,可以看到,第一个http请求是If Controller为true时的,UDV同时叠加了外层的全局变量和内层的变量,但内层的变量取的是If Controller为false时的变量(if为false时内部不执行),HTTP Header Manager取的是If Controller为true时内层的正常。

第二个http是外层请求,但UDV同样也叠加了外层的全局变量和内层的变量,但内层的变量取的也是If Controller为false时的变量(if为false时内部不执行),而HTTP Header Manager取的是外层正常。

最后翻看了一下官方文档,内容如下:

意思为:请注意,测试计划中的所有UDV元素——无论它们在哪里——都会在开始时进行处理。

所以可以理解为:

1、User Defined Variables(UDV):无论UDV被定义在哪里,都会被当成全局变量。如果变量名称一样,后面的值会覆盖前面的值。

2、HTTP Header Manager:内层请求的HTTP Header Manager会与外层HTTP Header Manager的叠加,组合成新的HTTP Header Manager。如果内层HTTP Header Manager中的名称与外层HTTP Header Manager中的名称有重复,则内层覆盖外层。外层请求的HTTP Header Manager只会用它自己的。

 

posted @ 2023-09-13 10:20  lbw  阅读(37)  评论(0编辑  收藏  举报