Skip to main content
 首页 » 编程设计

python之如何以稳定的方式使用 pytest 断言列表

2025年05月04日13haluo1

将 Python 应用程序从 2.6 迁移到 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 以稳定的方式比较断言结果?

请您参考如下方法:

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

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

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

如果你不能保证没有重复,使用sorted:

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