如何解决单元测试ImportErrors
问题描述:
当我运行:如何解决单元测试ImportErrors
python -m unittest discover unit_tests
或
python setup.py test
我收到大量的ImportErrors
为blowdrycss 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?
答
存在多个问题。
主要问题是blowdrycss.py
与软件包名称相同。这导致python进口商感到困惑。
更改blowdrycss.py
的名称为blowdry.py
帮助。
问题的另一半是当前工作目录没有被添加到PYTHONPATH
。我通过在__init__.py
中加入以下几行来解决此问题:
cwd = os.getcwd()
sys.path.insert(0, cwd)