JMeter命令行传入baseurl后,关联属性未动态取值的解决方案咨询
解决JMeter属性文件变量关联取值问题
你的问题核心是:JMeter通过-q加载属性文件时,属性内的变量引用会在加载阶段完成替换,而命令行传入的baseurl是在属性文件加载之后才生效的,所以原有属性里的${baseurl}不会被命令行传入的值覆盖替换。另外注意你的thirdUrl里拼写错误,${baseur}少了字母l,需要先修正为${baseurl}。
以下是几种可行的解决方式:
方法一:使用JMeter函数延迟变量替换
修改属性文件中的变量引用为${__P(baseurl,xxx)},__P函数会在测试运行时才去读取命令行传入的参数值,而不是加载属性文件时就替换。修改后的属性文件内容:baseurl=xxx secondUrl=${__P(baseurl,xxx)}\path1 thirdUrl=${__P(baseurl,xxx)}\path2其中
__P函数的第二个参数是默认值,和原来的xxx保持一致,确保未通过命令行传参时也能正常使用。方法二:命令行直接传入所有关联属性
如果不想修改属性文件,可在命令行同时传入baseurl及拼接后的secondUrl、thirdUrl,示例命令:jmeter -n -t 你的测试计划.jmx -q config.properties -Jbaseurl=http://实际地址 -JsecondUrl=http://实际地址\path1 -JthirdUrl=http://实际地址\path2这种方式需要手动在命令行完成拼接,适合临时场景。
方法三:用用户定义变量元件实现动态关联
在测试计划中添加用户定义变量元件,分别定义:baseurl:默认值设为xxxsecondUrl:值设为${baseurl}\path1thirdUrl:值设为${baseurl}\path2
之后通过命令行用-Jbaseurl=实际地址传入值时,用户定义变量内的引用会自动生效,同时兼容UI手动修改的需求。
内容的提问来源于stack exchange,提问作者Gurnam Singh
相关产品推荐
相关产品推荐

