python – assertEqual – 两个相同的列表,为什么我得到奇怪的结果?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – assertEqual – 两个相同的列表,为什么我得到奇怪的结果?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1058字,纯文字阅读大概需要2分钟。
内容图文
我有单元测试:
import unittest
class TestFail(unittest.TestCase):
def testFail(self):
data = range(5)
self.assertEqual(data, insertion_sorting(data))
class TestSuccess(unittest.TestCase):
def testSuccess(self):
data = range(5)
self.assertEqual([0,1,2,3,4], insertion_sorting(data))
def insertion_sorting(data):
result = []
while len(data):
min_index = 0
for i in range(len(data)):
if data[i] < data[min_index]: min_index = i
result.append(data[min_index])
del data[min_index]
return result
if __name__ == '__main__':
unittest.main()
TestSuccess运行成功,但TestFail提出:
AssertionError: Lists differ: [] != [0, 1, 2, 3, 4]
Second list contains 5 additional elements. First extra element 0: 0
- []
- [0, 1, 2, 3, 4]
你能解释一下,为什么TestSuccess成功运行,但TestFail没有?
解决方法:
您的insertion_sorting()函数具有破坏性:它会就您传递的列表进行就地修改.因此,在调用insertion_sorting()期间,确实会清除TestFail()中定义的数据变量引用的列表.
一个简单的解决方法是对列表的副本进行操作:
self.assertEqual(data, insertion_sorting(data[:]))
一个更复杂的选择是重构insert_sorting(),因此它不具有破坏性.
内容总结
以上是互联网集市为您收集整理的python – assertEqual – 两个相同的列表,为什么我得到奇怪的结果?全部内容,希望文章能够帮你解决python – assertEqual – 两个相同的列表,为什么我得到奇怪的结果?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。