RobotFramework查询XML数据库:结果集验证失败问题求助
问题分析与解决办法
兄弟,你踩的这个坑很常见——你拿到的查询结果[('Testing',)]根本不是单个字符串,而是一个装着单元素元组的列表,直接拿它和纯字符串Testing比,类型和结构都对不上,当然会报不等的错啦。
怎么提取纯值?
最简单直接的方式就是通过索引逐层取出来:
# 先从列表里拿出元组,再从元组里拿出字符串 ${pure_value}= Set Variable ${queryResults}[0][0] # 现在再做校验就没问题了 Should be equal ${pure_value} Testing
这里${queryResults}[0]会取到列表里的元组('Testing',),再加个[0]就能精准拿到里面的Testing字符串。
更严谨的写法(适合结果可能有变化的场景)
如果你的查询偶尔可能返回多条数据,或者担心结果结构异常,可以先做长度校验,避免索引报错:
# 确保列表里只有一条结果 Length Should Be ${queryResults} 1 # 取出列表里的第一个元组 ${result_tuple}= Get From List ${queryResults} 0 # 确保元组里只有一个值 Length Should Be ${result_tuple} 1 # 提取纯字符串 ${pure_value}= Set Variable ${result_tuple}[0] # 执行校验 Should be equal ${pure_value} Testing
为啥原语句会报错?
RobotFramework的Should be equal是严格比较,它会同时检查值和类型。[('Testing',)]是列表类型,而Testing是字符串类型,两者本质上不是同一个东西,所以校验失败是必然的。
内容的提问来源于stack exchange,提问作者mac
相关产品推荐
相关产品推荐

