5

Robot Framework で使用しているネストされたリストがあります。Robot Framework レベルでサブリストの 1 つの項目を変更したいと考えています。

私のリストは次のようになります。

[ボブ、メアリー、[6月、7月、8月]]

「7 月」を「9 月」などに変更したい

Robot Framework では「bob」または「mary」を変更できますが、リストを挿入しようとすると文字列に変換されます。

(ああ、「リストに挿入」キーワードを使用して新しいサブリストを挿入しようとしましたが、他のリストキーワードはうまくいきませんでした。)

4

3 に答える 3

5

このような Collections ライブラリのキーワードで変更を達成できました

*** settings ***                                                                       
Library   Collections                                                                

*** test cases ***                                                                     
test    ${l1}=  Create List  1  2  3                                        
        ${l2}=  Create List  foo  bar  ${l1}                                              
        ${sub}=  Get From List  ${l2}  2 
        Set List Value   ${sub}   2   400 
        Set List Value   ${l2}  2  ${sub}  
        Log  ${l2} 

サブリストを直接変更する方法を見つけることができませんでした。最初に抽出してから変更し、最後に元の位置に戻す必要があります。

于 2011-06-08T06:24:40.157 に答える
3

応答がないことから、これに対するきちんとしたクリーンな解決策がないことを推測しています。これが私がやったことです:

このようにユーティリティを作成しました:

class Pybot_Utilities:
    def sublistReplace(self, processList, item, SublistIndex, ItemIndex):
        '''
        Replaces an item in a sublist
        Takes a list, an object, an index to the sublist, and an index to a location in the sublist inserts the object into a sublist of the list at the location specified. 
        So if the list STUFF is (X, Y, (A,B,C)) and you want to change B to FOO give these parameters: [STUFF, FOO, 2, 1]
        '''

        SublistIndex=int(SublistIndex)
        ItemIndex=int(ItemIndex)
        processList[SublistIndex][ItemIndex] = str(item)
        return processList

次に、このエントリをロボット フレームワーク テスト スイート ファイルに追加します。

|    | ${ListWithSublist} = | sublistReplace    | ${ListWithSublist]}  | NewItem | 1 | 1 |

(もちろん、私のユーティリティライブラリをインポートしています)

これが実行された後、リストのインデックス 1 にあるサブリストの 2 番目の項目 (インデックス 1) は「NewItem」になります。

おそらく最もエレガントでも柔軟でもありませんが、今のところはうまくいきます

于 2011-06-03T13:47:26.007 に答える