将Python应用程序从2.6迁移到Python 2.7之后,我从pytest结果中了解到列表的顺序已更改。列表的内容是第三方openLDAP库的结果。
Python 2.6中的比较列表
assert ['1', '2', '8'] == ['1', '2', '8']
但是在Python 2.7中,列表的顺序已更改,这导致AssertionError
assert ['1', '8', '2'] == ['1', '2', '8']
最好的建议是更改实现以获取有序列表,或者更改测试,即通过将所有列表转换为set
以便以稳定的方式比较断言结果的方法?
答案 0 :(得分:4)
根据数据的性质,您有两种选择。我认为如果元素相同而不考虑顺序,您需要通过测试。
如果您可以保证列表中的所有项目都是唯一的,请使用set
:
assert set(['1', '8', '2']) == set(['1', '2', '8'])
如果您不能保证没有重复项,请使用sorted
:
assert sorted(['1', '8', '2']) == sorted(['1', '2', '8'])