机器人框架中的字典中仅更新了最后一次迭代值

only last iteration value is being updated in a dictionary in robot framework

提问人:Gyro Mixes 提问时间:11/14/2023 更新时间:11/14/2023 访问量:23

问:

gtx
    [Arguments]    @{crdnvlslst_params_args}
    ${dictx}    Create Dictionary
    ${dictx_card_vals}    Create Dictionary
    ${lenofcard}=    Get Length    ${crdnvlslst_params_args}
    FOR    ${element}    IN    @{crdnvlslst_params_args}
        ${card}    ${cardtext}=    Evaluate    "${element}".split("=")
        FOR    ${x}    IN RANGE    1    ${lenofcard}+${1}
            ${card_vals}    Set Variable    ${x}
            Set To Dictionary    ${dictx_card_vals}    card_head=${card_vals}    card_val=${EMPTY}
        END
        Set To Dictionary    ${dictx}    ${card}    ${dictx_card_vals}
        Log To Console    ${dictx}
    END

它给出的输出:

{'C1': {'card_head': 4, 'card_val': ''}, 'C2': {'card_head': 4, 'card_val': ''}, 'C5': {'card_head': 4, 'card_val': ''}, 'C6': {'card_head': 4, 'card_val': ''}}

但预期输出应该是:

{'C1': {'card_head': 1, 'card_val': ''}, 'C2': {'card_head': 2, 'card_val': ''}, 'C5': {'card_head': 3, 'card_val': ''}, 'C6': {'card_head': 4, 'card_val': ''}}

我是机器人框架的新手,请帮忙。

我尝试了各种方法。 就像使用临时词典来存储,然后 update.it 不起作用。请帮忙

python selenium-webdriver robotframework

评论


答:

0赞 Kachida 11/14/2023 #1

在提供的代码片段中,对于外部 for 循环的每次迭代,内部循环将运行四次。因此,它会导致将相同的值分配给 ${dictx_card_vals} 字典变量。尝试更改代码,如下所示 为了解决这个问题并实现预期的输出,请考虑修改您的代码,如下所示:

gtx
    [Arguments]    @{crdnvlslst_params_args}
    ${dictx}    Create Dictionary
    ${dictx_card_vals}    Create Dictionary
    ${lenofcard}=    Get Length    ${crdnvlslst_params_args}
    ${x}=   Set Variable    ${0}
    FOR    ${element}    IN    @{crdnvlslst_params_args}
        ${card}    ${cardtext}=    Evaluate    "${element}".split("=")
        ${x}   evaluate   ${x}+${1}
        Set To Dictionary    ${dictx_card_vals}    card_head=${x}    card_val=${EMPTY}
        Set To Dictionary    ${dictx}    ${card}    ${dictx_card_vals}
    END

评论

0赞 Gyro Mixes 11/15/2023
仍然获得相同的输出。{'C1': {'card_head': 4, 'card_val': ''}, 'C2': {'card_head': 4, 'card_val': ''}, 'C5': {'card_head': 4, 'card_val': ''}, 'C6': {'card_head': 4, 'card_val': ''}}