2011-05-08 41 views
1

我正在嘗試爲Django應用程序編寫一些測試,涉及文件上載。爲此,我想暫時將MEDIA_ROOT更改爲'myproject/fixtures/test_media /'。由於某種原因,這似乎阻止了Django找到燈具。Django:更改測試的媒體根

我的測試用例看起來像

from django.conf import settings 

class TestMedia(TestCase): 
    fixtures = ['fixtures/test_data.json'] 

    def setUp(self): 
     settings.MEDIA_ROOT = ''.join(
      [settings.PROJECT_PATH, '/fixtures/test_media/']) 

    def test_photo_size(self): 
     pass # Actually do something with the media files 

出於某種原因,Django的不能再裝入燈具,因此所有的測試失敗,

問題安裝燈具「燈具/ test_data.json」:回溯(最近呼叫最後) ...

我在做什麼錯?

+0

你可能想看看https://www.caktusgroup.com/blog/2013/06/26/media-root-and-django-tests/ – 2015-08-12 13:58:22

回答

1

你有沒有試圖刪除setUp,看看是否可以加載燈具?

此外,我不認爲你真的需要改變MEDIA_ROOT來測試上傳。您可以在tearDown中刪除這些上傳的文件以恢復所有內容。

編輯:

好像你正在運行在生產環境中的單元測試。老實說,這不是一個好主意。

但是,如果你必須這樣做,那麼使用另一個設置文件怎麼樣?就像這樣:

from mysite.settings import * 

MEDIA_ROOT = '/what_ever_you_like' 

,並運行你有額外的參數測試:

./manage.py test --settings=mysite.settings_for_test 
+0

是,不借助設置固定裝置工作正常。當我更改MEDIA_ROOT時,會發生問題。不過,我不明白MEDIA_ROOT應該如何影響燈具。 – Andrea 2011-05-08 20:15:49

+0

至於使用原始MEDIA_ROOT的可能性,我不能這樣做。我需要已經有一些媒體文件用於測試,並且我無法將它們放在實際的媒體目錄中。 – Andrea 2011-05-08 20:17:42

+0

使用附加參數運行測試的可能性很有意思。不過我不知道爲什麼在測試中更改媒體根目錄會打破固定裝置。 – Andrea 2011-05-09 09:17:58

1

在安裝程序不重寫,它是隻執行之前運行的TestCase子類的每個測試方法之前,將其覆蓋在模塊所有測試。

from django.conf import settings 
settings.MEDIA_ROOT += 'test' 
+0

另請參閱https://www.caktusgroup.com/blog/2013/06/26/media-root-and-django-tests/ – JHG 2015-07-30 09:01:14