2017-08-03 111 views
0

嗨,我已經寫了下面基本的Python單元測試代碼:錯誤的單元測試的Python 3.6.1

import unittest 

class Phonebooktest(unittest.TestCase): 

    def test_create_phonebook(): 
     print("welcome to python") 



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

我得到一個錯誤:

25 
/2 
10>>2 2 
Traceback (most recent call last): 
    File "test_phone_book.py", line 1, in <module> 
    import unittest 
    File "C:\Users\XXXXX\AppData\Local\Programs\Python\Python36\lib\unittest\__init__.py", line 58, in <module> 
    from .result import TestResult 
    File "C:\Users\XXXXX\AppData\Local\Programs\Python\Python36\lib\unittest\result.py", line 5, in <module> 
    import traceback 
    File "C:\Users\XXXXX\AppData\Local\Programs\Python\Python36\lib\traceback.py", line 3, in <module> 
    import collections 
    File "C:\Users\XXXXX\AppData\Local\Programs\Python\Python36\lib\collections\__init__.py", line 26, in <module> 
    from operator import itemgetter as _itemgetter, eq as _eq 
ImportError: cannot import name 'itemgetter' 

有人請幫我解決這個錯誤。

+0

「test_phone_book.py」所在的目錄中是否有文件名爲operator.py? –

+0

是的,有operator.py文件。我只是刪除&試過它的工作。我可否知道爲什麼會發生? – jaibalaji

+0

[從腳本導入已安裝的軟件包引發'AttributeError:模塊沒有屬性「或」ImportError:無法導入名稱「]可能的重複](https://stackoverflow.com/questions/36250353/importing-installed-package-from-script -raises-attributeerror-module-has-no-at) –

回答

1

很有可能您的目錄中有一個文件名爲operator.py。不幸的是,這個名字與Python的標準庫有衝突,它有一個operator模塊。

其實,看看最後兩行,其中一人說:

from operator import itemgetter as _itemgetter, eq as _eq 
    ImportError: cannot import name 'itemgetter' 

這表明它試圖從operator得到itemgetter,但因爲你有一個operator.py文件在工作目錄中,它會嘗試從該文件導入itemgetter,而不是Python的標準庫。

嘗試將您的operator.py重命名爲其他內容,看看會發生什麼。

+1

非常感謝你的信息。 :) – jaibalaji