2012-11-16 172 views
3

我愉快地写作和对我工作的API测试模块,并且使用命令:为什么单元测试不能找到我的tests.py?

python -m unittest myAPI.tests.APITests.test_mod_to_test 

正如预期的那样我的测试住在tests.py模块myAPI英寸这工作很好,我发现我不得不重构我的api.py文件中包含我正在测试的函数的一些代码。我改变了我需要改变的东西,然后返回到我的命令行,并通过在键盘上按下来运行完全相同的命令来保存输入。我得到这个错误:

AttributeError: 'module' object has no attribute 'tests' 

当我甚至没有改变目录或tests.py中的任何东西。我没有移动的文件或更改命令,我可以使用导入tests.py文件在Python外壳:

from myAPI import tests 

在此之后我进入:

print tests 

和输出是什么预计:

<module 'myAPI.tests' from '/path/to/myAPI/tests.pyc'> 

我在一个virtualenv中使用python 2.7没有真正安装它。该应用程序是为Django的1.2.1应用程序,但没有关系,因为我没有在我的测试过程中触摸django(除了它是安装在我的环境中)。

这是困扰我,我想它是如何从伟大的工作,而不是没有我改变目录或tests.py一些。任何帮助是非常感谢。

回答

1

我可以为这个错误提出两个可能的原因,但是没有更多的信息是不可能知道的。

  1. 您正在错误的地方运行测试。你没有说明你在哪里运行“python -m unittest myAPI.tests.APITests.test_mod_to_test”。如果从myAPI目录中运行它,则最终会出现奇怪的失败,因为您无权访问myAPI目录中的__init__.py文件。所以,你想确保你从包含myAPI测试的目录运行该调用。

  2. 您的'tests'目录中没有__init__.py文件。当你制作一个新目录时,很容易忘记放入一个。没有它,你将无法从目录内导入任何内容。

相关问题