2012-07-17 17 views
1

我是新來的單元測試python。我試圖從文檔的單元測試例如:來自doc的Unittest示例提高了AttributeError

import random 
import unittest 

class TestSequenceFunctions(unittest.TestCase): 

    def setUp(self): 
     self.seq = list(range(10)) 

    def test_shuffle(self): 
     # make sure the shuffled sequence does not lose any elements 
     random.shuffle(self.seq) 
     self.seq.sort() 
     self.assertEqual(self.seq, list(range(10))) 

     # should raise an exception for an immutable sequence 
     self.assertRaises(TypeError, random.shuffle, (1,2,3)) 

    def test_choice(self): 
     element = random.choice(self.seq) 
     self.assertTrue(element in self.seq) 

    def test_sample(self): 
     with self.assertRaises(ValueError): 
      random.sample(self.seq, 20) 
     for element in random.sample(self.seq, 5): 
      self.assertTrue(element in self.seq) 

if __name__ == '__main__': 
    unittest.main() 

運行這段代碼給了我在命令行下面的錯誤:

D:\src>python foo.py 
Traceback (most recent call last): 
    File "foo.py", line 8, in <module> 
    class TestSequenceFunctions(unittest.TestCase): 
AttributeError: 'module' object has no attribute 'TestCase' 

我使用的ActiveState的Python 3.2。爲什麼我在這裏遇到屬性錯誤?

+3

你在d:\ src \'中有一個名爲'unittest'的目錄嗎? – Tisho 2012-07-17 08:28:31

+0

進行調試,將print(unittest)語句添加到代碼中,並查看它是stdlib的unittest模塊還是您自己的文件。 – gps 2012-07-17 16:47:19

回答

6

很可能你在你的Python路徑中有第二個unittest模塊或包。

如果您創建了unittest.py文件或包含__init__.py文件的unittest目錄,python可以在標準python庫中找到正常模塊之前發現它。

命名本地模塊或包unittest等同於命名局部變量listdictmap;您正在使用本地重新定義來掩蓋內置名稱。

將該模塊或包重命名爲其他內容以解決此問題。

+0

是的,一個目錄。謝謝你的回答。 – Razer 2012-07-17 08:34:50

相關問題