2012-12-05 12 views
5

È possibile verificare il corretto caricamento di componenti di pagine statiche nel test automatico di Django?Django: test di caricamento riuscito di file statici

Ad esempio, utilizzando il client di prova django, oltre a testare lo client.get('x').status_code su 200, voglio verificare se tutte le risorse statiche di tutte le pagine (file css e js collegati) sono state caricate correttamente.

Se non è possibile utilizzando client, Esiste un plug-in o un sistema di test suplementare, ad es. Selenio, per abilitare questo tipo di test?

risposta

2

Immagino che tu voglia scoprire se il finder statico di django è in grado di trovare le tue risorse statiche.

Considerare il nome della propria app è my_app. Hai una cartella chiamata static al suo interno. Hai ancora una cartella chiamata my_app al suo interno che contiene la tua risorsa statica, diciamo qualche immagine chiamata '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 guarda dentro static/ sottodirectory di tutte le applicazioni per trovare la risorsa statica.

1

Mi sono appena trovato con un problema molto simile, anche se volevo verificare se il file fosse incluso nella pagina piuttosto che controllare che fosse caricato, perché lo includo in modo selettivo.

Per farlo, ho semplicemente controllato utilizzando assertContains:

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

Tenete a mente che staticfilename.js potrebbero essere inclusi da qualche altra parte nella pagina.

assertContains controllerà se la risposta status_code è ok, quindi controlla se la ricerca str è inclusa in response.content.