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时的变量,HTTP Header Manager取的是If Controller为true时内层的正常。
第二个http是外层请求,但UDV同样也叠加了外层的全局变量和内层的变量,但内层的变量取的也是If Controller为false时的变量,而HTTP Header Manager取的是外层正常。
最后翻看了一下官方文档,内容如下:
意思为:请注意,测试计划中的所有UDV元素——无论它们在哪里——都会在开始时进行处理。所以可以理解为:无论这个UDV定义在哪里,都会被当成全局变量。
- Variables Defined Manager Jmeter Headervariables defined manager jmeter 插件plugins manager jmeter variables session_variables differential algorithms variables deciding variables scripts reuse batch variables automate notation power collection variables postman python-task variables functions python page_execute_writecopy writecopy variables execute