2012-11-16 173 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文件。當你製作一個新目錄時,很容易忘記放入一個。沒有它,你將無法從目錄內導入任何內容。

相關問題