Robot Framework FOR循环已加END仍报缺少闭合END错误
问题描述
使用Robot Framework编写自动化测试脚本时遇到异常:已为FOR循环添加闭合END标识,但运行时仍提示FOR loop must have closing END错误。其中第一个测试用例somefunc1运行符合预期,第二个测试用例Create List and Loop执行抛出上述错误。
原始测试脚本:
*** Settings *** Library SeleniumLibrary # importing selenium library *** Variables *** @{ROBOTS}= Bender Johnny5 Terminator Robocop *** Test Cases *** somefunc1 FOR ${i} IN RANGE 999999 Exit For Loop If ${i} == 9 Log ${i} Log To Console ${i} stream=STDOUT no_newline=False END Log Exited Create List and Loop FOR ${robot} IN @{ROBOTS} Log ${robot} End
实际运行输出
somefunc1 0 1 2 3 4 5 6 7 8 somefunc1 | PASS | ------------------------------------------------------------------------------ Create List and Loop | FAIL | FOR loop must have closing END.
故障原因
Robot Framework 中FOR/IF/WHILE等结构化语法块的闭合关键字END必须使用全大写形式,大小写混合、全小写的写法都不会被解析器识别为块结束标记,只会被当成普通关键字处理。
对比两个测试用例的写法:
- 正常运行的
somefunc1中,FOR循环闭合使用的是全大写END,符合语法要求 - 报错的
Create List and Loop中,FOR循环闭合写的是首字母大写的End,解析器无法识别这是块结束标记,因此判定FOR循环缺少闭合END,抛出错误
修复方案
将第二个FOR循环末尾的End修改为全大写的END即可,修正后的对应代码段如下:
Create List and Loop FOR ${robot} IN @{ROBOTS} Log ${robot} END
内容的提问来源于stack exchange,提问作者Momba Chomba
相关产品推荐
相关产品推荐

