2016-07-01 48 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

self.assertItemsEqual(actual_output, expected_output) 

在Python-3,這種方法被重命名爲assertCountEqual

+1

這似乎適用於Python2但不適用於Python3(我得到一個'AttributeError',它說它找不到那個斷言函數) –

+0

我沒有意識到'assertItemsEqual'已從Python 3中移除。請參閱https://bugs.python.org/issue17866。 – chepner

+0

你鏈接的文檔指定,儘管很細微,它已被重命名爲「assertCountEqual」在Python 3 –

相關問題