如何在Robot Framework中从字典提取值并返回元组列表?
在Robot Framework中从字典提取值并生成元组列表的实操方案
嘿,我来帮你搞定这个需求!针对你给出的JSON结构,咱们可以分几步在Robot Framework里实现提取指定字段并返回元组列表的目标,下面是具体的操作方法:
第一步:先把JSON转成可操作的字典对象
首先得把你的JSON字符串解析成Robot能处理的字典。这里有两种常用方式:
方式1:用BuiltIn库结合Python的json模块
如果不想额外导入库,直接用BuiltIn的Evaluate关键字就行:
# 假设你的JSON内容存在变量${json_str}里 ${parsed_dict}= Evaluate json.loads('''${json_str}''') json
方式2:用JsonLibrary库(更直观)
先在Settings里导入JsonLibrary,然后调用解析关键字:
*** Settings *** Library JsonLibrary # 解析JSON字符串 ${parsed_dict}= Load JSON From String ${json_str}
第二步:取出products列表
从解析后的字典里,咱们要先拿到_embedded下的products数组,这是咱们要处理的核心数据:
# 用Robot原生的Get From Dictionary关键字 ${products_list}= Get From Dictionary ${parsed_dict} _embedded.products # 或者用Python的取值方式,更灵活 ${products_list}= Evaluate ${parsed_dict}["_embedded"]["products"]
第三步:生成元组列表
这一步有两种写法,你可以根据自己的习惯选:
写法1:用Python列表推导式(简洁高效,推荐)
一行代码就能搞定,直接提取每个product里的id和Name组成元组,再收集成列表:
# 这里可以根据需求替换成你要提取的其他字段,比如securityType ${tuple_list}= Evaluate [(item["id"], item["Name"]) for item in ${products_list}]
写法2:用Robot原生循环(更易读,适合新手)
如果不想写Python代码,用Robot的循环关键字一步步来:
# 先创建一个空列表用来存元组 ${tuple_list}= Create List # 遍历每个product项 FOR ${item} IN @{products_list} # 提取当前项的id和Name ${product_id}= Get From Dictionary ${item} id ${product_name}= Get From Dictionary ${item} Name # 创建元组 ${product_tuple}= Create Tuple ${product_id} ${product_name} # 把元组加到列表里 Append To List ${tuple_list} ${product_tuple} END
完整示例代码
把上面的步骤整合起来,给你一个可直接运行的完整测试用例:
*** Settings *** Library BuiltIn Library JsonLibrary *** Test Cases *** Extract Product Tuple List # 模拟你的JSON内容(实际场景可以从接口响应或文件读取) ${json_str}= Catenate SEPARATOR=\n ... { "_embedded" : { "products" : [ ... { "id" : "BMHY2IZB", "Name" : "ANR", "securityType" : "type1", "_links" : { "self" : { "href" : "https://test.com/v1/products/BMHY2IZB" }, "relatedproducts" : { "href" : "https://test.com/v1/products/BMHY2IZB/related" } } }, ... { "id" : "FXDNZBW", "Name" : "STREPLC", "securityType" : "ANV", "_links" : {} } ... ] } } # 解析JSON为字典 ${parsed_dict}= Load JSON From String ${json_str} # 获取products列表 ${products_list}= Get From Dictionary ${parsed_dict} _embedded.products # 生成元组列表 ${result_tuple_list}= Evaluate [(p["id"], p["Name"]) for p in ${products_list}] # 打印结果验证 Log 提取到的元组列表:${result_tuple_list} Log List ${result_tuple_list}
小提示
- 字段名要和JSON里的完全一致哦!比如JSON里是
Name(首字母大写),就不能写成name,否则会取不到值 - 如果需要提取其他字段,比如
securityType,只需要修改推导式里的键名就行,比如(item["id"], item["securityType"]) - 列表推导式的写法执行效率更高,代码也更简洁,优先推荐这种方式
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

