2012-12-05 7 views
5

Djangoの自動テストで静的ページコンポーネントを正常に読み込むことはテストできますか?Django:静的ファイルのロードが成功したかどうかを確認してください

たとえば、client.get('x').status_codeを200にテストするだけでなく、djangoテストクライアントを使用して、すべてのページの静的リソース(リンクされたcssファイルとjsファイル)が正常に読み込まれているかどうかをテストします。

clientを使用できない場合は、プラグインまたは補助テストシステムがありますか?そのようなタイプのテストを可能にするためのセレン

答えて

2

djangoのstaticfile finderがあなたの静的リソースを見つけることができるかどうかを知りたいと思います。

あなたのアプリ名はmy_appとします。その中にstaticという名前のフォルダがあります。静的リソースが含まれているmy_appというフォルダがあります。ここに「test.jpg」という名前の画像があります。

myapp 
|-- __init__.py 
`-- models.py 
`-- static 
    `-- myapp 
     `-- test.jpg 

from django.contrib.staticfiles import finders 
from django.contrib.staticfiles.storage import staticfiles_storage 

class TestStaticFiles(TestCase): 
"""Check if app contains required static files""" 
def test_images(self): 
    abs_path = finders.find('myapp/test.jpg') 
    self.assertTrue(staticfiles_storage.exists(abs_path)) 

findersは静的リソースを見つけるために、すべてのアプリケーションのstatic/サブディレクトリ内に見えます。

1

非常に似た問題がありましたが、選択したファイルを含めるので、ファイルが読み込まれているかどうかを確認するのではなく、ページに含まれているかどうかを確認したかったのです。そうするには

は、私は単にassertContainsを使用してチェック:

def test_static_file_included(self): 
    response = self.client.get(reverse('my-view')) 
    self.assertContains(response, 'staticfilename.js') 

staticfilename.jsは、ページのどこかに含まれ得ることに留意してください。

assertContainsレスポンスstatus_codeがokかどうかを確認し、検索文字列がresponse.contentに含まれているかどうかを確認します。

関連する問題