1、源代码
以下代码执行时会报 range' object does not support item assignment 的错误,问题出现在第17行的runge(10);
import unittest import random class TestSequenceFunctions(unittest.TestCase): def setUp(self): #初始化一个递增序列 self.seq = range(10) def runTest(self): #从序列seq中随机选取一个元素 element = random.choice(self.seq) #验证随机元素确实属于列表中 # self.assertTrue(element in self.seq) class TestDictValueFormatFunchions(unittest.TestCase): def setUp(self): self.seq = range(10)#这里是出错的地方 def test_shuffle(self): #随机打乱原seq的顺序 random.shuffle(self.seq) self.seq.sort() self.assertEqual(self.seq,range(10)) #验证执行函数是跑出了TypeError异常 self.assertEqual(TypeError,random.shuffle,(1,2,3)) if __name__ == "__main__": unittest.main()
2、修改后的代码
在17行的基础上添加list(range(10))就ok了。
错误原因:是python3中range不返回数组对象,而是返回range对象
import unittest import random class TestSequenceFunctions(unittest.TestCase): def setUp(self): #初始化一个递增序列 self.seq = range(10) def runTest(self): #从序列seq中随机选取一个元素 element = random.choice(self.seq) #验证随机元素确实属于列表中 # self.assertTrue(element in self.seq) class TestDictValueFormatFunchions(unittest.TestCase): def setUp(self): self.seq = list(range(10))#这里是修改过的地方 def test_shuffle(self): #随机打乱原seq的顺序 random.shuffle(self.seq) self.seq.sort() self.assertEqual(self.seq,range(10)) #验证执行函数是跑出了TypeError异常 self.assertEqual(TypeError,random.shuffle,(1,2,3)) if __name__ == "__main__": unittest.main()