检查一行是否包含一个句子,如果下一行包含其他句子则产生错误

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}"""