2016-07-01 13 views
3

私は辞書のリストを返す関数の単体テストを書いています。出力が期待どおりであるかどうかを確認する最良の方法は何ですか? "期待どおり"とは、辞書内のキーの順序やリスト内の辞書の順序とは無関係に、リスト内の辞書が同じキーと値を持つことを意味します。したがって、このような何か:辞書の関数出力リストの場合、単体テストを行う方法は?

expect_output = [ {"c":4} , {"a" : 4 , "b" : 3}] 
actual_ouput = [{"b" : 3, "a" : 4 }, {"c":4}] 
# some function that would return true in this case. 
+3

'ソート(actual_output)==に変更されソート済み(expected_output) '? – jonrsharpe

+0

何らかの形でリストを並べ替えることができます。 – BrenBarn

+1

@jonrsharpe私はあなたが両方を並べ替える必要があると思います+1しかし、それは最も明確で(そしておそらく最も速い) –

答えて

4

はあなたがunittestを使用している場合は、a method for thisがある:

Pythonの-3では
self.assertItemsEqual(actual_output, expected_output) 

、この方法はassertCountEqual

+1

これはPython2では動作しますが、Python3では動作しないようです( 'AttributeError'を取得して、アサート関数が見つかりません) –

+0

私は 'assertItemsEqual'がPython 3から削除されたことに気づいていませんでした。https://bugs.python.org/issue17866を参照してください。 – chepner

+0

あなたがリンクしたドキュメントは、Python 3で 'assertCountEqual'に名前が変更されたということを微妙に指定しています。 –

関連する問題