3

我很高兴为我正在使用的 API 编写和测试模块,并使用以下命令:

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 shell 中导入文件:

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 中的一些内容,它是如何从工作良好变为不工作的。任何帮助都非常感谢。

4

1 回答 1

1

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

  1. 您从错误的地方运行测试。您没有说明您在哪里运行“python -m unittest myAPI.tests.APITests.test_mod_to_test”。如果您从 myAPI 目录中运行它,您可能会遇到奇怪的失败,因为您无权访问__init__.pymyAPI 目录中的文件。因此,您要确保从包含 myAPI 测试的目录运行该调用。

  2. 您的“测试”目录中没有__init__.py文件。创建新目录时很容易忘记放一个。没有它,您将无法从目录中导入任何内容。

于 2013-02-14T02:18:59.230 回答