2016-03-01 20 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' –

相关问题