Robot Framework中Append to List覆盖列表而非追加问题求助
问题分析与解决方案
你的核心问题是每次调用Keyword时都重新创建了列表,导致之前追加的id被丢弃,看起来像是被覆盖。不管用${test_id_list} Create List还是@{test_id_list}= Create List,只要在Keyword里执行这个创建语句,每次调用都会生成一个新的空列表,之前的列表内容根本没被保留。
解决方法一:用全局列表存储
把列表定义为全局变量,只初始化一次,之后每次追加都操作同一个列表:
- 在测试套件的
*** Variables ***块里提前声明空列表:
*** Variables *** @{test_id_list} # 初始化为空列表
- 修改你的Keyword,删除创建列表的语句,直接追加:
${test_id} Get Value From JSON ${response} $.id ${test_id} Get From List ${test_id} 0 Append to List ${test_id_list} ${test_id}
如果不想在变量块声明,也可以在Suite Setup里初始化一次列表:
*** Test Cases *** Suite Setup Create List ${test_id_list}
解决方法二:让Keyword接收列表参数
把已有的列表作为参数传给Keyword,每次追加都基于传入的列表操作:
- 修改Keyword,添加参数接收列表:
*** Keywords *** Collect Test IDs [Arguments] ${target_list} ${test_id} Get Value From JSON ${response} $.id ${test_id} Get From List ${test_id} 0 Append to List ${target_list} ${test_id}
- 在测试用例里先创建列表,然后多次调用Keyword时传入同一个列表:
*** Test Cases *** Collect Multiple IDs @{test_id_list} Create List Collect Test IDs ${test_id_list} # 后续需要追加时继续传入这个列表 Collect Test IDs ${test_id_list}
这样就能保证所有id都追加到同一个列表里,不会被覆盖。
内容的提问来源于stack exchange,提问作者Christian Francis Dayao
相关产品推荐
相关产品推荐

