Robotframework 如何使用;保留在字典中”;在一个使用robot框架的函数中

Robotframework 如何使用;保留在字典中”;在一个使用robot框架的函数中,robotframework,Robotframework,我有一个字典列表,我想使用robot框架提取其中的一部分。我看到关键字“保留在字典里”正是我需要的,但我不能使用它 我现在需要的是得到姓名和年龄,去掉性别。为此,我想创建自己的关键字,因为我将在应用程序的每个部分使用不同的关键字。我的尝试: Get data from users [Arguments] @{keys} @{userData} Copy list ${users} :FOR ${user} IN @{users} \

我有一个字典列表,我想使用robot框架提取其中的一部分。我看到关键字“保留在字典里”正是我需要的,但我不能使用它

我现在需要的是得到姓名和年龄,去掉性别。为此,我想创建自己的关键字,因为我将在应用程序的每个部分使用不同的关键字。我的尝试:

Get data from users
   [Arguments]  @{keys}
   @{userData}  Copy list  ${users}
   :FOR    ${user}    IN    @{users}
   \       Keep in Dictionary  ${user}  ${keys}
[Return]  ${userData}
它不起作用,因为${keys}是一个列表,不是函数所需的参数

如何修复它?

我将使用而不是
保留在字典中
。下面是robot脚本:

*** Test Cases ***
Test Case 1
    ${keysToRemove}  Create List  gender
    ${desiredList}   Remove Data From Users    ${users}    ${keysToRemove}


*** Keywords ***
Remove Data From Users
    [Arguments]     ${users}    ${keysToRemove}

    ${userData}      Create List  

    ${length}   Get Length  ${users}

    FOR  ${INDEX}  IN RANGE  ${length}        
        ${modifiedDictionary}   Remove Keys From Dictionary  ${users[${INDEX}]}  ${keysToRemove}
        Append To List  ${userData}  ${modifiedDictionary}
    END

    [Return]    ${userData}


Remove Keys From Dictionary
    [Arguments]     ${dictionary}     ${keysToRemove}

    ${length}     Get Length  ${keysToRemove} 

    FOR     ${INDEX}    IN RANGE    ${length}
        Remove From Dictionary  ${dictionary}     ${keysToRemove[${INDEX}]}
    END

    [Return]    ${dictionary}
该实现有两个关键字
从用户中删除数据
从字典中删除关键字

Remove Data From Users
接受两个参数
Users
keystemove
users
是用户词典的列表,
keyToRemove
是要从
users

Remove key From Dictionary
接受两个参数
Dictionary
keystemove
dictionary
是作为dictionary传递的单个用户详细信息,
keystemove
是要删除的密钥列表。这只是
从用户中删除数据
关键字的帮助函数

${desiredList}
将包含同一个用户列表,其性别从原始列表中删除

以上这些应该可以帮助你实现你的目标,但是也可以有其他方法来解决你的问题

注意:由于Robot框架不支持嵌套for循环,因此需要helper关键字,这是因为Robot框架的一个缺点。您还可以将
从用户中删除数据
定义为纯python关键字,并去掉第二个helper关键字


多亏了这里给我的答案,我找到了做这件事的方法


谢谢,但这对我来说没有用,删除而不是保留对我来说是一个肮脏的解决方案,并且使代码不可读,如果我需要循环,我将循环复制。除此之外,不必在循环中使用位置参数,您可以循环为:对于${keystemove}中的${key},这是我可以想到的一种方法。这完全取决于你是否接受它。另外,我确实理解在Python中迭代列表元素是可能的,我只使用了其中一种替代方法。
*** Test Cases ***
Test Case 1
    ${keysToRemove}  Create List  gender
    ${desiredList}   Remove Data From Users    ${users}    ${keysToRemove}


*** Keywords ***
Remove Data From Users
    [Arguments]     ${users}    ${keysToRemove}

    ${userData}      Create List  

    ${length}   Get Length  ${users}

    FOR  ${INDEX}  IN RANGE  ${length}        
        ${modifiedDictionary}   Remove Keys From Dictionary  ${users[${INDEX}]}  ${keysToRemove}
        Append To List  ${userData}  ${modifiedDictionary}
    END

    [Return]    ${userData}


Remove Keys From Dictionary
    [Arguments]     ${dictionary}     ${keysToRemove}

    ${length}     Get Length  ${keysToRemove} 

    FOR     ${INDEX}    IN RANGE    ${length}
        Remove From Dictionary  ${dictionary}     ${keysToRemove[${INDEX}]}
    END

    [Return]    ${dictionary}
Get data from users
   [Arguments]  @{keys}
   @{userData}  Copy list  ${users}
   :FOR    ${user}    IN    @{users}
   \       Keep in Dictionary  ${user}  @{keys}
   [Return]  ${userData}