簡體   English   中英

字符串`matches`在JSR223斷言中似乎不起作用

[英]String `matches` does not appear to work in a JSR223 Assertion

我有以下斷言代碼...

Boolean result = prev.getResponseDataAsString().matches(".*Close.*")
System.out.println(result)
if(!result){
    BufferedWriter writer = null;
    try{
        writer = new BufferedWriter( new FileWriter("I:\\failedpayload.txt"))
          writer.write(prev.getResponseDataAsString())
     }
     catch(Exception ex){
        System.out.println(ex.getMessage())
     }
     finally{
        writer.close()
     }
    // System.out.println("Response:"+prev.getResponseDataAsString());
}
AssertionResult.setFailure(!result); 

測試失敗,結果最終為假。 但是,當我查看創建的文件時,會在其中看到搜索字符串。

為什么要在創建的文件中Close而不是在創建布爾值時Close

最終確實可以工作...

import java.util.regex.*
...
Pattern aPattern = Pattern.compile(".*Close.*",Pattern.MULTILINE);
Matcher aMatcher = aPattern.matcher(prev.getResponseDataAsString());
Boolean result = aMatcher.find();

基本上,注釋建議的匹配項不適用於多行。

如果您想要Groovy-您可以使用匹配運算符,例如:

def text = 'I Was Close Enough' 
def matcher = (text ==~ /.*Close.*/)
log.info('Matches: ' + matcher)

JMeter GRoovy火柴

如果需要多行-可以使用(?m)運算符,在Groovy中它將輸入視為多行:

JMeter Groovy正則表達式

更多信息:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM