2017-08-03 87 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