如何以稳定的方式使用pytest声明列表?

时间:2018-11-23 09:32:17

标签: python python-2.7 pytest

将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以便以稳定的方式比较断言结果的方法?

1 个答案:

答案 0 :(得分:4)

根据数据的性质,您有两种选择。我认为如果元素相同而不考虑顺序,您需要通过测试。

如果您可以保证列表中的所有项目都是唯一的,请使用set

assert set(['1', '8', '2']) == set(['1', '2', '8'])

如果您不能保证没有重复项,请使用sorted

assert sorted(['1', '8', '2']) == sorted(['1', '2', '8'])