hal*_*fak 117 python nose python-import
我似乎无法使用鼻子测试框架来识别文件结构中测试脚本下面的模块.我已经设置了一个最简单的例子来演示这个问题.我将在下面解释.
这是包文件结构:
./__init__.py
./foo.py
./tests
./__init__.py
./test_foo.py
Run Code Online (Sandbox Code Playgroud)
foo.py包含:
def dumb_true():
return True
Run Code Online (Sandbox Code Playgroud)
tests/test_foo.py包含:
import foo
def test_foo():
assert foo.dumb_true()
Run Code Online (Sandbox Code Playgroud)
两个init .py文件都是空的
如果我nosetests -vv在主目录(foo.py所在)中运行,我得到:
Failure: ImportError (No module named foo) ... ERROR
======================================================================
ERROR: Failure: ImportError (No module named foo)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/loader.py", line 379, in loadTestsFromName
addr.filename, addr.module)
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 39, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 86, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/home/user/nose_testing/tests/test_foo.py", line 1, in <module>
import foo
ImportError: No module named foo
----------------------------------------------------------------------
Ran 1 test in 0.002s
FAILED (errors=1)
Run Code Online (Sandbox Code Playgroud)
当我从tests /目录中运行时,我得到了同样的错误.根据我发现的文档和示例,鼻子应该将所有父包添加到路径以及调用它的目录,但在我的情况下似乎没有发生这种情况.
我正在使用Python 2.6.2运行Ubuntu 8.04.如果重要的话,我手动构建并安装了鼻子(不是使用setup_tools).
ire*_*ses 219
你__init__.py的顶级目录中有一个.这使它成为一个包.如果你删除它,你nosetests应该工作.
如果不删除它,你必须改变你import来import dir.foo,哪里dir是你的目录的名称.
top*_*pur 31
你是一个虚拟的人吗?在我的情况下,nosetests是/usr/bin/nosetests正在使用的那个/usr/bin/python.virtualenv中的软件包绝对不会出现在系统路径中.以下修正了这个:
source myvirtualenv/activate
pip install nose
which nosetests
/home/me/myvirtualenv/bin/nosetests
Run Code Online (Sandbox Code Playgroud)
rob*_*rit 12
对于那些你以后发现这个问题的人:如果__init__.py我的测试目录中没有文件,我会收到导入错误.
我的目录结构是这样的:
./tests/
./test_some_random_stuff.py
Run Code Online (Sandbox Code Playgroud)
如果我跑鼻子测试:
nosetests -w tests
Run Code Online (Sandbox Code Playgroud)
这会让ImportError其他人都看到.如果我添加一个空白__init__.py文件,它可以正常工作:
./tests/
./__init__.py
./test_some_random_stuff.py
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45400 次 |
| 最近记录: |