Automatització de Tests Web (Selenium)
Ara que tenim aplicacions web muntades, com validem que funcionen bé pel client final? Ho fem amb proves de Caixa Negra des del navegador.
Què és Selenium i què és un Driver?
Selenium és l'estàndard de la indústria per automatitzar navegadors web. Actua com un "robot" fantasma que obre un navegador de debò, llegeix la pantalla, busca camps de text, els omple i fa clic als botons.
Selenium (codi Python)
La nostra eina. Escrivim les instruccions en Python: "vés a aquesta URL", "busca el camp password", "escriu-hi X", "fes clic al botó".
Driver (programa intermediari)
Selenium no sap parlar directament amb Chrome o Firefox. Necessita un
traductor intermediari. Per a Firefox: geckodriver.
Cal descarregar-lo i col·locar-lo al PATH de l'ordinador.
El Mode Headless (Navegador sense cap)
Si executem un test en un servidor remot (que no té targeta gràfica ni monitor), el navegador donarà error en intentar obrir la finestra.
Què és el mode Headless?
El navegador s'executa "d'esquenes" (a la RAM) sense mostrar cap finestra ni interfície gràfica. Invisible però funcional.
Avantatges
Soluciona el problema dels servidors sense pantalla, fa els tests infinitament més ràpids i consumeix menys memòria.
L'Entorn Segur: BD de Tests i Fixtures
Django disposa de StaticLiveServerTestCase. Quan un test fa servir aquesta classe, Django automàticament:
Aixeca un mini servidor web temporal
A l'ordinador local, sense tocar el servidor real.
Crea una BD totalment en blanc
Només per al test. Aïllada al 100% de les dades reals.
Injecta les Fixtures (JSON)
Dades preparades: "crea l'usuari admin amb contrasenya X".
Garanteix que cada test parteix de la mateixa situació exacta.
Obre el navegador i executa el test
El robot comprova el codi sobre l'entorn temporal.
Apaga i destrueix la BD temporal
No deixa absolutament cap rastre.
Com s'estructura un Test Automatitzat?
Tot test té tres fases: preparació, acció i validació (els Asserts).
setUpClass
S'executa al principi de tot. Inicialitza el robot del navegador (amb el mode headless actiu).
El Test + Asserts
El robot va a una URL (get), omple camps (send_keys), fa clic
(click). Després els Asserts comproven el resultat: si
fallen → test FALLAT.
tearDownClass
Quan acaben tots els tests, "mata" el navegador amb driver.quit() per no
deixar processos zombies robant memòria.
🗂️ Resum Ràpid — Mòdul 5
geckodriver per Firefox.driver.quit() per matar el navegador al
final.