and*_*pei 0 python pytest python-2.7
将Python应用程序从2.6迁移到Python 2.7之后,我从pytest结果中了解到列表的顺序已更改。列表的内容是第三方openLDAP库的结果。
Python 2.6中的比较列表
assert ['1', '2', '8'] == ['1', '2', '8']
Run Code Online (Sandbox Code Playgroud)
但是使用Python 2.7时,列表的顺序已更改,这导致 AssertionError
assert ['1', '8', '2'] == ['1', '2', '8']
Run Code Online (Sandbox Code Playgroud)
最好的建议是,将实现更改为有序列表,或者更改测试,即将所有列表转换set
为,以便以稳定的方式比较声明的结果?
您有两种选择,具体取决于数据的性质。我认为如果元素相同而不考虑顺序,您需要通过测试。
如果可以保证列表中的所有项目都是唯一的,请使用set
:
assert set(['1', '8', '2']) == set(['1', '2', '8'])
Run Code Online (Sandbox Code Playgroud)
如果您不能保证没有重复项,请使用sorted
:
assert sorted(['1', '8', '2']) == sorted(['1', '2', '8'])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
304 次 |
最近记录: |