首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >robotframework:字典没有关键错误

robotframework:字典没有关键错误
EN

Stack Overflow用户
提问于 2020-06-06 03:14:38
回答 1查看 1.6K关注 0票数 0

当我运行带有列表的测试时,会发现一个错误,即字典没有键。但是正如你所看到的,我确实打印了键,而它的值应该是列表的键似乎就在那里。

不知道我做错了什么,为什么我的钥匙在错误信息中以不同的方式显示。如果能帮助解决这个问题,我将不胜感激。

代码语言:javascript
复制
*** Variables ***
${p1}=  P-1
${f1}=  F-2
${p2}=  P-2
${p3}=  P-3


*** Test Cases ***
DICT-WITH-LISTS
    [tags]   run
    ${resNameList} =   Create List
    ${laneInfoList}=      Create Dictionary     L0=res1   L1=res2   L2=res3   L3=res4   L4=res5
    ${lane2resNameMappingList}=     Create List
    log to console   LANE ID LIST : ${laneInfoList.keys()}
    :FOR    ${laneID}     IN      @{laneInfoList.keys()}
    \       Append To List  ${resNameList}  ${laneInfoList['${laneID}']}
    \       ${lane2resName}=     Create dictionary   lane=${laneID}   resName=${laneInfoList['${laneID}']}
    \       Append To List  ${lane2resNameMappingList}    ${lane2resName}

    ${resName2resObjMappingList}=      Create Dictionary
    @{resNameList}=   Remove Duplicates  ${resNameList} 
    log to console  res LIST: @{resNameList}
    ${totalres}=  Get length   ${resNameList}
    : FOR    ${index}    IN RANGE    0    ${totalres}
    \       log to console   INDEX:${index} res:${resNameList}[${index}] AFMObj:afm${index}
    \       set to dictionary    ${resName2resObjMappingList}   ${resNameList}[${index}]=afm${index}

    log to console  lane2resNameMappingList: ${lane2resNameMappingList}
    log to console  resName2resObjMappingList: ${resName2resObjMappingList}
    set global variable  ${lane2resNameMappingList}
    set global variable  ${resName2resObjMappingList}

    ${totalObjList}=  create list  ${p1}  ${f1}  ${p2}  ${p3}
    ${totalObjsInTest}=  Get length   ${totalObjList}
    ${totalLanesAvailable}=  Get length   ${lane2resNameMappingList}

    ${totalObjs} =  Set Variable IF  ${totalObjsInTest} > ${totalLanesAvailable}  ${totalLanesAvailable}  ${totalObjsInTest}
    ${object2resMappingList}=      Create Dictionary

    ${resList} =   Create List
    log to console   Attaching res for a total of ${totalObjs} objects based on current availability!
    : FOR    ${index}    IN RANGE    0    ${totalObjs}
    \    log to console   Obj:${totalObjList}[${index}] 
    \    log to console   res: ${lane2resNameMappingList[${index}]['resName']} 
    \    log to console   res Obj:${resName2resObjMappingList['${lane2resNameMappingList[${index}]['resName']}']}
    \    log to console   Lane:${lane2resNameMappingList[${index}]['lane']}
    \    log to console   BW:${lane2resNameMappingList[${index}]['lane']}
    \    ${isKeyPresent}=    Run Keyword And Return Status       Dictionary Should Contain Key       ${object2resMappingList}      ${totalObjList}[${index}]
    \    log to console   KEY:${isKeyPresent}
    \    Run Keyword Unless  ${isKeyPresent}    set to dictionary    ${object2resMappingList}   ${totalObjList}[${index}]=${resList}
    \    log to console  AFTER:object2resMappingList: ${object2resMappingList}
    \    log to console  OBJ:${totalObjList}[${index}] VALUE:${resName2resObjMappingList['${lane2resNameMappingList[${index}]['resName']}']}
    \    log to console   DICT : ${object2resMappingList.keys()}
    \    log to console   DICT : &{object2resMappingList} KEY:${totalObjList}[${index}]
    \    Run Keyword  Append To List  &{object2resMappingList}[${totalObjList}[${index}]]  ${resName2resObjMappingList['${lane2resNameMappingList[${index}]['resName']}']}
    \    ${resList} =   Create List
    log to console  object2resMappingList: ${object2resMappingList}

输出

...LANE ID列表: odict_keys('L0','L1','L2','L3','L4')

....res列表:'res1','res2','res3','res4','res5‘

.INDEX:0 res:res1afmobj:afm0 0

索引:1 res:res2 AFMObj:afm1 1

指数:2 res:res 3 AFMObj:afm2

指数:3 res:res 4 AFMObj:afm3 3

索引:4 res:res5 AFMObj:afm4 4

.lane2resNameMappingList:{ 'L0','resName':'res1'},{‘L4’:'L1',‘resName’},{ 'res2'},{ 'res3'},{‘res3’},{ 'L3','resName':'res4'},{ 'L4','resName':'res5'} .resName2resObjMappingList:{'res1':'afm0','res2':‘afm4 1’,'res3':'afm2','res4':‘afm4 3’,'res5':'afm4'}

基于当前可用性的共4个对象的....Attaching res!

. .Obj:P-1

res: res1

res Obj:afm0 0

莱恩:L0

体重:L0

键:假

后面:object2resMappingList:{'P-1':[]}

OBJ:P-1值:afm0 0

DICT : odict_keys('P-1')

迪克:{'P-1':[]}键:P-1

没有键“P-1”、“F-2”、“P2”、“P-3‘0”。

测试

1次临界测试,0通过,1次失败

1测试总计,0通过,1失败

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-06 04:49:28

更改此处引用键的方式,从:

代码语言:javascript
复制
Run Keyword  Append To List  &{object2resMappingList}[${totalObjList}[${index}]]  ${resName2resObjMappingList['${lane2resNameMappingList[${index}]['resName']}']}

至:

代码语言:javascript
复制
Run Keyword  Append To List  ${object2resMappingList['${totalObjList}[${index}]']}  ${resName2resObjMappingList['${lane2resNameMappingList[${index}]['resName']}']}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62226854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档