JMeter Beanshell 断言:如何保存 Runtime.getRuntime().exec("ifconfig | grep \"${IpAddress}\" | wc -l") 的值?
JMeter Beanshell Assertion: How do I save the value of Runtime.getRuntime().exec("ifconfig | grep \"${IpAddress}\" | wc -l")?
我的 shell 命令 ifconfig | grep \"${IpAddress}\" | wc -l
return 是 0
或 1
当 运行 在终端内时。我需要使用 JMeter 做同样的事情并相应地断言(0
失败,1
通过)。但是当我这样做的时候:
Runtime.getRuntime().exec("ifconfig | grep \"${IpAddress}\" | wc -l");
我在 return 中一无所获!关于如何保存(并稍后检索)此命令输出的值有什么想法吗?
你基本上通过 pipe:
执行了 3 个命令
ifconfig
grep
wc
它只能在 Linux SHELL 中工作,因此您需要将命令修改为:
/bin/bash -c ifconfig | grep \"${IpAddress}\" | wc -l
您将 JMeter 变量引用为 ${IpAddress}
这不是很好的做法,因为它们可以解析为导致编译失败的内容。考虑对 JMeterVariables class 实例使用 vars
shorthand 而不是像 vars.get("IpAddress")
您没有使用最好的测试元素,starting JMeter 3.1 it is recommended to use JSR223 Elements and Groovy language 用于任何形式的脚本。
假设以上所有我会推荐使用 JSR223 Assertion 和这样的代码:
String response = org.apache.commons.lang3.StringUtils.normalizeSpace(['/bin/bash', '-c', 'ifconfig | grep \"' + vars.get('IpAddress') + '\" | wc -l'].execute().text)
if (response.equals("1")) {
//do what you need here
}
我的 shell 命令 ifconfig | grep \"${IpAddress}\" | wc -l
return 是 0
或 1
当 运行 在终端内时。我需要使用 JMeter 做同样的事情并相应地断言(0
失败,1
通过)。但是当我这样做的时候:
Runtime.getRuntime().exec("ifconfig | grep \"${IpAddress}\" | wc -l");
我在 return 中一无所获!关于如何保存(并稍后检索)此命令输出的值有什么想法吗?
你基本上通过 pipe:
执行了 3 个命令ifconfig
grep
wc
它只能在 Linux SHELL 中工作,因此您需要将命令修改为:
/bin/bash -c ifconfig | grep \"${IpAddress}\" | wc -l
您将 JMeter 变量引用为
${IpAddress}
这不是很好的做法,因为它们可以解析为导致编译失败的内容。考虑对 JMeterVariables class 实例使用vars
shorthand 而不是像vars.get("IpAddress")
您没有使用最好的测试元素,starting JMeter 3.1 it is recommended to use JSR223 Elements and Groovy language 用于任何形式的脚本。
假设以上所有我会推荐使用 JSR223 Assertion 和这样的代码:
String response = org.apache.commons.lang3.StringUtils.normalizeSpace(['/bin/bash', '-c', 'ifconfig | grep \"' + vars.get('IpAddress') + '\" | wc -l'].execute().text)
if (response.equals("1")) {
//do what you need here
}