2016-03-01 54 views
2

我是一個新人,Python和我與得到正確的項目結構掙扎,這樣我可以創建一個包和下一個單獨的tests目錄爲它進行單元測試。Python包結構,使單元測試(「父模塊未加載」錯誤)

我已試過在描述的規範格式:http://docs.python-guide.org/en/latest/writing/structure/#sample-repository。不幸的是,即使在github上使用example我不能讓這項工作:

python tests\test_basic.py 
Traceback (most recent call last): 
File "tests\test_basic.py", line 3, in <module> 
    from .context import sample 
SystemError: Parent module '' not loaded, cannot perform relative import 

python -m unittest無法正常工作或:

ERROR: sample (unittest.loader._FailedTest) 
ImportError: Failed to import test module: sample 
Traceback (most recent call last): 
    File "C:\ProgramData\chocolatey\lib\python3\tools\lib\unittest\loader.py", line 462, in _find_test_path 
    package = self._get_module_from_name(name) 
    File "C:\ProgramData\chocolatey\lib\python3\tools\lib\unittest\loader.py", line 369, in _get_module_from_name 
    __import__(name) 
    File "E:\source\python\samplemod\sample\__init__.py", line 1, in <module> 
    from .core import hmm 
    File "E:\source\python\samplemod\sample\core.py", line 9 
    print get_hmm() 
       ^
SyntaxError: invalid syntax 

編輯:下面表明,它的運行測試,但不是(如通過使測試失敗所證實的)

> python setup.py test 
running test 

任何想法這裏發生了什麼?如果連推薦的格式都不行,那麼我就很乾燥...我在Windows上的python 3.5.1上

編輯:我發現如果我安裝鼻子(python -m pip install nose),那麼我可以運行單元測試:

python -m nose 

回答

2

對問題here有很好的解釋。

長話短說,當您嘗試在腳本中使用相對導入(作爲一個模塊內相對)遇到了麻煩。快速解決方案是在運行測試腳本時使用-m參數。

python -m tests\test_basic.py 

如果這不起作用,您可以嘗試使用絕對導入。上面的鏈接將提供更多細節。

+0

感謝您的建議,但仍使用'-m'錯誤沒有喜悅: '不叫「模塊測試\\ test_basic' –