2016-02-04 129 views
2

當我運行:如何解決單元測試ImportErrors

python -m unittest discover unit_tests

python setup.py test

我收到大量的ImportErrorsblowdrycss project

樣品:

test_BreakpointParser (unittest.loader._FailedTest) ... ERROR 
test_classExtractor (unittest.loader._FailedTest) ... ERROR 
test_classPropertyParser (unittest.loader._FailedTest) ... ERROR 
test_colorParser (unittest.loader._FailedTest) ... ERROR 
test_CSSBuilder (unittest.loader._FailedTest) ... ERROR 
test_CSSFile (unittest.loader._FailedTest) ... ERROR 
test_CSSPropertyValueParser (unittest.loader._FailedTest) ... ERROR 
... 
ImportError: No module named 'settings' 
ImportError: No module named 'blowdrycss_settings' 
ImportError: No module named 'blowdrycss.blowdrycss_settings' 
ImportError: No module named 'utilities' 
ImportError: No module named 'breakpointparser' 

項目結構:

blowdrycss/ 
    blowdrycss/ 
     settings/ 
      __init__.py 
      blowdrycss_settings.py 
     unit_tests/ 
      __init__.py 
      test_BreakpointParser.py 
      test_*.py 
      ... 
     __init__.py 
     blowdrycss.py 
     breakpointparser.py 
     utilities.py 
     ...  

什麼奇怪的是,當我運行這些測試從PyCharm一切經過,但是當我在命令行中運行它打破。

也許這是一個簡單的配置問題,但我不知道我做錯了什麼。

如何解決這些ImportErrors?

回答

4

存在多個問題。

主要問題是blowdrycss.py與軟件包名稱相同。這導致python進口商感到困惑。

更改blowdrycss.py的名稱爲blowdry.py幫助。

問題的另一半是當前工作目錄沒有被添加到PYTHONPATH。我通過在__init__.py中加入以下幾行來解決此問題:

cwd = os.getcwd() 
sys.path.insert(0, cwd)