2012-09-16 18 views
10

Ho letto di test in django. Una cosa che è stata raccomandata è stata l'uso di django-webtest per test funzionali. Ho trovato un articolo decente here che insegna come fare i test funzionali nel selenio usando python. Ma le persone hanno anche raccomandato l'estensione di WebTest di Ian Bicking djagno-webtest da utilizzare per testare moduli in django. In che modo le prove con webtest e le prove con il selenio sono diverse nel contesto delle forme di django?Differenza tra django-webtest e selenio

Quindi, dal punto di prova di vista funzionale:

Come funziona django-webtest e selenio andare fianco a fianco?

Abbiamo bisogno di avere entrambi o qualcuno dovrebbe fare?

risposta

9

La cosa importante da sapere su Selenium è che è concepito principalmente per essere un framework di test indipendente dal server. Non importa quale framework o implementazione lato server viene utilizzata per creare il front-end finché si comporta come previsto. Inoltre, mentre è (e se possibile probabilmente dovrebbe) scrivere i test manualmente in Selenium, molti test sono macro registrati di qualcuno che passa attraverso i movimenti che vengono poi trasformati in codice automaticamente.

D'altra parte, django-webtest è progettato per funzionare specificamente sui siti Web di Django. In realtà è un'estensione specifica per Django di WebTest, che non è solo Django, ma solo WSGI (e quindi solo Python). Per questo motivo, può interagire con l'applicazione con un livello più alto di consapevolezza di come funzionano le cose sul server. Questo può rendere più rapidi i test in esecuzione e può anche semplificare la scrittura di test più dettagliati e dettagliati. Inoltre, a differenza del selenio, i tuoi test non possono essere scritti automaticamente come macro registrate.

In caso contrario, i due strumenti hanno generalmente lo stesso scopo e sono destinati a testare lo stesso tipo di cose. Detto questo, suggerirei di sceglierne uno invece di utilizzarli entrambi.

21

La differenza principale è che il selenio esegue un browser effettivo, mentre WebTest si collega al WSGI. Questo comporta le seguenti differenze:

  • Non possono testare il codice JS con WebTest, dal momento che non v'è nulla per eseguirlo.
  • WebTest è molto più veloce in quanto si aggancia alla WSGI, questo significa anche un minor richiesta di memoria
  • WebTest non richiede di eseguire effettivamente il server su una porta, quindi è un po 'più facile per parallize
  • WebTest non controlla diversi problemi che si verificano con i browser attuali, come specifiche bug versione del browser (tosse .. Internet Explorer .. tosse ..)

Bottom line: preferiscono utilizzare WebTest, a meno che non è necessario utilizzare selenio per le cose che non può essere testato con WebTest.