【发布时间】:2013-04-23 16:34:33
【问题描述】:
nosetests 是否以不同的方式对待具有某些名称的目录? src 目录是特殊的吗?
如果我有一个源目录名为src 的项目,nosetests 似乎可以正常工作。但是,如果目录被命名为其他任何名称,nosetests 会报告一堆导入错误。
这就是我所做的:
-
运行测试
~/src$ nosetests .. ---------------------------------------------------------------------- Ran 2 tests in 0.001s OK -
重命名目录
~/src$ cd .. ~/$ mv src/ src2 -
重新运行测试
~/$ cd src2 ~/src2$ nosetests E ====================================================================== ERROR: Failure: ImportError (No module named **whatever**) ---------------------------------------------------------------------- Traceback (most recent call last): ... etc. ... import **whatever** ImportError: No module named **whatever** ---------------------------------------------------------------------- Ran 1 test in 0.001s FAILED (errors=1)
我无法在文档中找到任何关于此的内容。
示例:使用此目录结构:
.
|-- a
| |-- b.py
| `-- __init__.py
|-- __init__.py
`-- test
|-- a
| |-- __init__.py
| `-- testb.py
`-- __init__.py
所有__init__.py文件都是空的,a/b.py的内容是:
y = 3
和test/a/testb.py:
import a.b
import unittest as u
class TestB(u.TestCase):
def test1(self):
self.assertTrue(True)
def test2(self):
self.assertTrue(False)
我可以可靠地重现此问题。运行nosetests -V 给出:
nosetests version 1.2.1
【问题讨论】:
-
应该很简单。您的测试中有哪些导入?
-
相当多,而且两种情况下的导入完全相同。您认为特定的导入可能会导致问题吗?如果是这样,为什么目录没有命名
src,但不是? -
好吧,我没有在目录中用一个简单的测试用例重现它。您的测试中的某些东西(或它们导入的东西)需要
src模块存在。您能否只留下一个简单的测试,除了TestCase类之外没有任何导入,然后再试一次? -
@AlexanderAfanasiev 我添加了一个示例。不过,其中任何地方都没有提到
src。我真的很难过。 :( -
我已经在本地创建了提到的目录结构,是的,我已经复制了它。有趣的事实:如果您从根目录中删除
__init__.py- 它会起作用。
标签: python unit-testing import nose nosetests