检查一行是否包含一个句子,如果下一行包含其他句子则产生错误
Check if a line contains a sentence and generate error if next line contain other sentence
我是这个框架的新手。
我有一个可能包含错误的日志文件。
但是,如果一行包含关键字“ERROR”,那么下一行是“找不到配置文件”这句话,该错误不应使测试失败,示例:
...
2021-06-03 07:51:22,487|ERROR|http-listener-1
Message : No provisioning file found
...
此处出现错误,但在下一行出现“消息:未找到配置文件”,因此不应使测试失败。
我写了这个:
Checking errors in logs
|{logs}=|Get File|${path}
|@{logLines}=|Split to lines|${logs}
||:FOR|${line}|IN|@{logLines}
?????
||END
但是我不知道如何做循环体,因为我必须成对地遍历这些行。
无需拆分循环,直接从主串中查找子串
定义一个带有子字符串的变量并检查主字符串(日志)是否包含您的子字符串。关键点是将 \n
放入您的子字符串变量中,就像我在我的示例中放置的那样,它将匹配下一行。像下面的例子:
*** Setting ***
Library OperatingSystem
*** Variables ***
${str1} "|ERROR|http-listener-1\nMessage : No provisioning file found"
*** Test Cases ***
logs check
${logs}= Get File ${Path}
log to console ${logs}
${contains}= Evaluate ${str1} in """${logs}"""
should be True ${contains}
编辑:根据您的评论,您也可以使用 Should match regexp
检查正则表达式。如下所示:
*** Setting ***
Library OperatingSystem
*** Variables ***
${reg1} "|ERROR|*\nMessage : No provisioning file found"
*** Test Cases ***
Logs Check
${logs}= Get File ${Path}
log to console ${logs}
Should match regexp ${reg1} """${logs}"""
我是这个框架的新手。
我有一个可能包含错误的日志文件。
但是,如果一行包含关键字“ERROR”,那么下一行是“找不到配置文件”这句话,该错误不应使测试失败,示例:
...
2021-06-03 07:51:22,487|ERROR|http-listener-1
Message : No provisioning file found
...
此处出现错误,但在下一行出现“消息:未找到配置文件”,因此不应使测试失败。
我写了这个:
Checking errors in logs
|{logs}=|Get File|${path}
|@{logLines}=|Split to lines|${logs}
||:FOR|${line}|IN|@{logLines}
?????
||END
但是我不知道如何做循环体,因为我必须成对地遍历这些行。
无需拆分循环,直接从主串中查找子串
定义一个带有子字符串的变量并检查主字符串(日志)是否包含您的子字符串。关键点是将 \n
放入您的子字符串变量中,就像我在我的示例中放置的那样,它将匹配下一行。像下面的例子:
*** Setting ***
Library OperatingSystem
*** Variables ***
${str1} "|ERROR|http-listener-1\nMessage : No provisioning file found"
*** Test Cases ***
logs check
${logs}= Get File ${Path}
log to console ${logs}
${contains}= Evaluate ${str1} in """${logs}"""
should be True ${contains}
编辑:根据您的评论,您也可以使用 Should match regexp
检查正则表达式。如下所示:
*** Setting ***
Library OperatingSystem
*** Variables ***
${reg1} "|ERROR|*\nMessage : No provisioning file found"
*** Test Cases ***
Logs Check
${logs}= Get File ${Path}
log to console ${logs}
Should match regexp ${reg1} """${logs}"""