2016-02-04 178 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) 
相关问题