2012-12-05 2 views
5

Django 자동 테스트에서 정적 페이지 구성 요소를 성공적으로로드했는지 테스트 할 수 있습니까?Django : 정적 파일의 성공적인로드를 테스트하십시오.

예를 들어 django 테스트 클라이언트를 사용하여 client.get('x').status_code을 200으로 테스트하는 것 외에도 모든 페이지의 정적 리소스 (링크 된 CSS 및 js 파일)가 성공적으로로드되었는지 테스트하고 싶습니다.

client을 사용할 수없는 경우 플러그인 또는 보조 테스트 시스템이 있습니까? 예 : 이러한 유형의 테스트를 활성화하려면 셀레늄?

답변

2

django의 staticfile 찾기가 정적 리소스를 찾을 수 있는지 알고 싶습니다.

앱 이름은 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에 포함되어 있는지 확인합니다.

관련 문제