Groovy 如何在响应断言失败时将JMeter变量写入文件
我在HTTP请求下有一个响应断言,它检查用户登录时是否显示“访问不足”。这是一个简单的文本断言 仅在失败时,我希望将用户凭据写入文件。我正试图通过JS223后处理器来实现这一点,到目前为止,我只能找到关于如何使用它写入文件的信息,但是我找不到关于如何首先检查响应断言的任何信息Groovy 如何在响应断言失败时将JMeter变量写入文件,groovy,jmeter,jsr223,Groovy,Jmeter,Jsr223,我在HTTP请求下有一个响应断言,它检查用户登录时是否显示“访问不足”。这是一个简单的文本断言 仅在失败时,我希望将用户凭据写入文件。我正试图通过JS223后处理器来实现这一点,到目前为止,我只能找到关于如何使用它写入文件的信息,但是我找不到关于如何首先检查响应断言的任何信息 FileWriter fstream = new FileWriter("C:\\Loadtest\\log.txt",true); //Create New file with name &q
FileWriter fstream = new FileWriter("C:\\Loadtest\\log.txt",true); //Create New file with name "subid"
BufferedWriter out = new BufferedWriter(fstream);
// Need logic to check if response has failed and then do below steps
if (assertionhasfailed)
{
out.write(vars.get("account"));
out.write(System.getProperty("line.separator"));//insert new line
}
out.close();
fstream.close();
编辑
我通过使用JS223断言解决了这个问题:
Boolean result = prev.getResponseDataAsString().contains("Insufficient privileges")
FileWriter fstream = new FileWriter("C:\\Loadtest\\log.txt",true); //Create New file with name "subid"
BufferedWriter out = new BufferedWriter(fstream);
if (result)
{
out.write(vars.get("account"));//write value of variable 1
out.write(System.getProperty("line.separator"));//insert new line
AssertionResult.setFailure(true);
AssertionResult.setFailureMessage("User has insufficient privileges");
}
out.close();
fstream.close();
现在的问题是,这是否是最好的方法?我这样问是因为我注意到在运行测试时,当它处理断言时有明显的延迟。这可能会扭曲性能指标。在惯用Groovy中,您的代码看起来像:
new File("C:\\Loadtest\\log.txt").withWriter{ out ->
boolean result = prev.responseDataAsString.contains 'Insufficient privileges'
if (result) {
out.println vars.account
AssertionResult.failure = true
AssertionResult.failureMessage = 'User has insufficient privileges'
}
}
根据JMeter测试元素:
if (!prev.isSuccessful()) {
//your code here
}
其中,prev
代表previous
更多信息: