Robot Framework中如何实现嵌套字典变量赋值及占位符替换?
问题原因
你定义&{multipleUserList}的写法存在逻辑错误:字典的键具有全局唯一性,你在同一个字典下重复声明id、extension键,后面的键值对会直接覆盖前面的内容,这是第一组用户信息丢失的根本原因。
正确实现方案
你需要用「列表嵌套字典」的结构存储多用户信息,每个用户对应一个独立的字典,所有用户字典存放在同一个列表中,再根据API要求套入外层请求结构即可。
步骤1:定义正确的多用户模板结构
# 定义两个独立的用户模板字典 &{user1_template} id={rand_id} extension={rand_extn} &{user2_template} id={rand_id2} extension={rand_extn2} # 把用户字典存入列表,得到多用户集合 @{multiple_user_list} ${user1_template} ${user2_template} # 如果你的API要求外层是字典结构,可再封装一层 &{request_body} users=${multiple_user_list}
步骤2:批量替换占位符
# 生成所需的随机值 ${uni_id}= Generate Random String 2 [NUMBERS] ${uni_extn}= Generate Random String 4 [NUMBERS] ${uni_id2}= Generate Random String 2 [NUMBERS] ${uni_extn2}= Generate Random String 4 [NUMBERS] # 定义占位符和随机值的映射表,后续新增用户只需要更新该表即可 &{ph_map} \ {rand_id} ${uni_id} \ {rand_extn} ${uni_extn} \ {rand_id2} ${uni_id2} \ {rand_extn2} ${uni_extn2} # 遍历每个用户字典替换占位符 :FOR ${user} IN @{multiple_user_list} \ :FOR ${ph} ${target_val} IN &{ph_map} \ \ # 替换id字段的占位符 \ \ ${ori_id}= Get From Dictionary ${user} id \ \ ${new_id}= Replace String ${ori_id} ${ph} ${target_val} \ \ Set To Dictionary ${user} id ${new_id} \ \ # 替换extension字段的占位符 \ \ ${ori_extn}= Get From Dictionary ${user} extension \ \ ${new_extn}= Replace String ${ori_extn} ${ph} ${target_val} \ \ Set To Dictionary ${user} extension ${new_extn}
步骤3:发起API请求
直接将封装好的请求体变量传入接口请求即可,以RequestsLibrary为例:
${resp}= Post Request your_session_alias /api/create/users json=${request_body}
内容的提问来源于stack exchange,提问作者Lokesh Singh
相关产品推荐
相关产品推荐

