You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Robot Framework执行报错:未找到名为'RowCnt'的关键字

报错原因

这个错误是Robot Framework(以下简称RF)解析逻辑时,把本应作为字符串/变量内容的RowCnt识别成待执行的关键字导致的,核心诱因按出现概率排序如下:

  • 参数分隔不规范,长文本被错误拆分
    RF语法规定,关键字与参数、参数与参数之间必须用至少2个半角空格分隔,只要出现连续2个及以上半角空格,就会被判定为参数边界。你代码中传给日志、断言关键字的消息是长文本,如果文本里误打了连续多空格,RF会直接把长文本拆成多个独立参数,多出来的参数会被识别为后续要执行的关键字,刚好你的报错文本里有连写的RowCnt,就会触发找不到关键字的报错。
    另外你代码里写的info不是RF内置关键字,内置打印日志的关键字是Log,直接写不存在的info会加剧参数解析的混乱。
  • 比较表达式写法不规范
    你写的判断条件"${RowCnt}">= 1存在语法问题:变量和>=运算符之间没有留空格,在RF4.0以前的版本中,Run Keyword If的条件会按空格拆分解析,表达式粘连会导致RF错误拆分后续内容,把普通文本识别成关键字。
  • 基础语法错误+依赖缺失引发连锁问题
    第一行入参校验你写的是'$strQuery',漏掉了RF变量必需的大括号(正确写法是${strQuery}),会导致入参校验完全失效;另外你调用的Row Count是第三方数据库库(比如DatabaseLibrary)提供的关键字,如果没有提前导入对应库,关键字执行失败返回的错误信息会存入${RowCnt},叠加参数拆分问题就会触发这类报错。
修复方案

按以下步骤修改即可解决:

  1. 修正基础语法错误
    • 所有写info的位置替换为内置关键字Log,需要指定日志级别时可追加参数level=INFO
    • 把入参校验的'$strQuery'改为'${strQuery}'
    • 所有比较表达式的运算符前后加半角空格,比如${RowCnt} >= 1、"${Execution Status}" == "PASS",数字比较时不需要给变量加引号,避免变成字符串比较引发逻辑错误
  2. 规范长文本参数传值
    所有传给Log、Fail的长文本消息,不要直接写在关键字后面,先用Catenate关键字拼接成单个变量再传入,避免文本里的多空格被RF识别为参数分隔符。
  3. 补全依赖导入
    在套件/资源文件的Settings区域提前导入提供Row Count关键字的数据库库(比如DatabaseLibrary),并确保数据库连接初始化正常。

修复后的可运行参考代码:

# 校验查询语句非空
Should Be True    '${strQuery}'    msg="Query can not be Empty.. Please provide the Query"

# 执行查询获取行数
${Execution Status}    ${RowCnt}    Run Keyword And Ignore Error    Row Count    ${strQuery}
# 提前拼接日志文本,避免分隔错误
${success_log}    Catenate    SEPARATOR=    Row Count for the given Query :- is ${strQuery} and Row Count is: - ${RowCnt}
${query_fail_msg}    Catenate    SEPARATOR=    Error encountered while Querying the Database using Query - ${strQuery} and error is ${RowCnt}
Run Keyword If    "${Execution Status}" == "PASS"    Log    ${success_log}    ELSE    Fail    ${query_fail_msg}

# 校验返回行数
${row_log}    Catenate    SEPARATOR=    Records returned from DB are either 1 or more than 1:- ${RowCnt}
${row_fail_msg}    Catenate    SEPARATOR=    Record returned from DB is 0 and RowCnt is - ${RowCnt}. Refine the query and re-execute it
Run Keyword If    ${RowCnt} >= 1    Log    ${row_log}    ELSE    Fail    ${row_fail_msg}

内容的提问来源于stack exchange,提问作者The Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 00:01:19