2016-08-28 79 views
2

我有一個非常簡單的Django應用程序,我試圖運行單元測試。在我的tests.py文件中,我試圖導入父應用程序視圖文件。我試過了。進口觀點,但得到了一個錯誤:在運行測試時未找到Django中已安裝的應用程序

SystemError: Parent module '' not loaded, cannot perform relative import 

我讀到,當一個相對路徑不工作,你可以嘗試使用絕對路徑,所以我嘗試‘從菜單中導入的意見’,但不是得到了另一個錯誤:

ImportError: No module named 'menu' 

當我爲應用程序運行本地服務器時,它工作得很好。它只有當我運行'覆蓋運行'覆蓋運行菜單/ tests.py'。由於它運行良好,並且該模塊位於我的設置的已安裝應用程序中,所以我不完全確定爲什麼會發生這種情況。

菜單/ tests.py

import unittest 

from menu import views 

class ModelTestCase(unittest.TestCase): 
    def setUp(self): 
     pass 

    def test_menu(self): 
     pass 

if __name__ == '__main__': 
    unittest.main() 

settings.py

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'menu', 
    'django_nose' 
) 

回溯

timothybaney$ coverage run menu/tests.py 
Traceback (most recent call last): 
    File "menu/tests.py", line 3, in <module> 
    from menu import views 
ImportError: No module named 'menu' 
+0

做你試圖將其重命名,即'mymenu'? – sergiuz

+0

是的,只是試過了,不幸的是它沒有工作。 – JBT

+0

你能顯示更多日誌嗎? – sergiuz

回答

2

它沒有太多的信息,你給了我們。但是當我看看追蹤它說File 'menu/tests.py'。因此,如果views.py也是菜單文件夾內,你只可以這樣寫:

import views 

如果views.py是在主文件夾,你可以寫:

from ..main import views #replace 'main' with your folder name 
+0

謝謝唐,奇怪的是,這工作。我覺得那就像從那以後一樣。導入視圖,但我必須更多地瞭解一下爲什麼會發生這種情況。 – JBT

相關問題