单元测试每个元素在2个列表中是否匹配

时间:2019-04-15 22:57:33

标签: python list unit-testing comparison

在Python中2个列表相同的单元测试。如果他们不按顺序执行,似乎会失败。考虑先对其进行排序或转换为集合。但是如果有重复等,set方法就不正确

l1 = ['c-00355', 'b-0ae53', 'c-07d32']
l2 = ['b-0ae53', 'c-07d32' ,'c-00355']

l1 == l2
False

set(l1) == set(l2)
True

sorted(l1) == sorted(l2)
True

1 个答案:

答案 0 :(得分:1)

也许考虑使用collections.Counter-这是set和列表排序之间的一种交叉,然后将其进行比较...这是__eq__方法,检查每个键是否都存在,并且数量是否匹配,例如:

from collections import Counter                                                   

l1 = ['c-00355', 'b-0ae53', 'c-07d32']                                            
l2 = ['b-0ae53', 'c-07d32' ,'c-00355']                                            

Counter(l1) == Counter(l2)                                                        
# True

l2 = ['b-0ae53', 'c-07d32' ,'c-00355', 'c']                                       

Counter(l1) == Counter(l2)                                                        
# False