Diferencia entre revisiones de «Pruebas de las Vistas»
(Página creada con «Selelinum -------------- Selenium es un framework para testing y automatización de servidores en general que nos permite simular como actuaría un usuario frente a nuestr...») |
|||
(No se muestran 3 ediciones intermedias del mismo usuario) | |||
Línea 4: | Línea 4: | ||
Selenium es un framework para testing y automatización de servidores en general que nos permite simular como actuaría un usuario frente a nuestra aplicación[[https://www.seleniumhq.org/]] | Selenium es un framework para testing y automatización de servidores en general que nos permite simular como actuaría un usuario frente a nuestra aplicación[[https://www.seleniumhq.org/]] | ||
− | En nuestro caso usaremos selenium dada la | + | En nuestro caso usaremos selenium dada la dificultad de probar las vistas en django. Estas vistas, normalmente tienen que lidiar con dependencias AJAX, Javascript, etc para poder ejecutarse normalmente. |
− | Por ejemplo podemos probar si el acceso a la web de login es correcto o no | + | Por ejemplo podemos probar si el acceso a la web de login es correcto o no. |
+ | '''Ejercicio 1''' | ||
+ | |||
+ | Descargar e instalar la extensión de selenium para nuestro navegador: | ||
+ | |||
+ | * [[Archivo:selenium-ide.png||500px]] | ||
+ | * Grabar una prueba para realizar un login correcto. | ||
+ | [[Archivo:selenium-record.png||500px]] | ||
+ | * Replicar la prueba | ||
+ | |||
+ | Este sistema si bien es valido para diseñar y lanzar pruebas, es poco práctico cuando queremos automatizarlas. Para eso selenium permite integrar sus pruebas en java, python. | ||
+ | |||
+ | '''Ejercicio 2''' | ||
+ | |||
+ | Instalamos selenium | ||
+ | <source> $ pip install selenium==2.33.0 </source> | ||
+ | Instalamos el driver para firefox que se encargará de reproducir el código dentro del navegador | ||
+ | <source> | ||
+ | wget https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux64.tar.gz | ||
+ | tar -x geckodriver -zf geckodriver-v0.24.0-linux64.tar.gz -O > /usr/bin/geckodriver | ||
+ | chmod +x /usr/bin/geckodriver | ||
+ | rm geckodriver-v0.24.0-linux64.tar.gz | ||
+ | </source> | ||
+ | Importante, si vamos a lanzar firefox dentro de un contenedor Docker deberíamos permitir que nuestro pc admita conexiones externas a las X <source>xhost +</source> | ||
+ | |||
+ | Finalmente, escribimos el código de nuestro test. | ||
<source> | <source> | ||
import unittest | import unittest | ||
Línea 16: | Línea 41: | ||
def setUp(self): | def setUp(self): | ||
self.driver = webdriver.Firefox() | self.driver = webdriver.Firefox() | ||
− | + | ||
def test_signup_fire(self): | def test_signup_fire(self): | ||
− | self.driver.get("http://localhost: | + | self.driver.get("http://localhost:5000/admin/login/?next=/admin/") |
− | self.driver.find_element_by_id(' | + | self.driver.find_element_by_id('id_username').send_keys("practica") |
− | self.driver.find_element_by_id(' | + | self.driver.find_element_by_id('id_password').send_keys("practica") |
− | self.driver.find_element_by_id(' | + | self.driver.find_element_by_id('login-form').click() |
− | self. | + | self.assertTrue(len(self.driver.find_elements_by_id('user-tools'))>0) |
− | |||
def tearDown(self): | def tearDown(self): | ||
self.driver.quit | self.driver.quit | ||
Línea 33: | Línea 57: | ||
* '''Importante''' estos tests los podemos ejecutar desde dentro del propio sistema django o bien implementarlos para ejecutarlos de manera autonoma | * '''Importante''' estos tests los podemos ejecutar desde dentro del propio sistema django o bien implementarlos para ejecutarlos de manera autonoma | ||
+ | |||
+ | '''Ejercicio 3''' | ||
+ | |||
+ | Implementar un test para crear una pregunta. |
Revisión actual del 09:32 16 nov 2019
Selelinum
Selenium es un framework para testing y automatización de servidores en general que nos permite simular como actuaría un usuario frente a nuestra aplicación[[1]]
En nuestro caso usaremos selenium dada la dificultad de probar las vistas en django. Estas vistas, normalmente tienen que lidiar con dependencias AJAX, Javascript, etc para poder ejecutarse normalmente.
Por ejemplo podemos probar si el acceso a la web de login es correcto o no.
Ejercicio 1
Descargar e instalar la extensión de selenium para nuestro navegador:
- Replicar la prueba
Este sistema si bien es valido para diseñar y lanzar pruebas, es poco práctico cuando queremos automatizarlas. Para eso selenium permite integrar sus pruebas en java, python.
Ejercicio 2
Instalamos selenium
$ pip install selenium==2.33.0
Instalamos el driver para firefox que se encargará de reproducir el código dentro del navegador
wget https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux64.tar.gz
tar -x geckodriver -zf geckodriver-v0.24.0-linux64.tar.gz -O > /usr/bin/geckodriver
chmod +x /usr/bin/geckodriver
rm geckodriver-v0.24.0-linux64.tar.gz
xhost +
Finalmente, escribimos el código de nuestro test.
import unittest
from selenium import webdriver
class TestSignup(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
def test_signup_fire(self):
self.driver.get("http://localhost:5000/admin/login/?next=/admin/")
self.driver.find_element_by_id('id_username').send_keys("practica")
self.driver.find_element_by_id('id_password').send_keys("practica")
self.driver.find_element_by_id('login-form').click()
self.assertTrue(len(self.driver.find_elements_by_id('user-tools'))>0)
def tearDown(self):
self.driver.quit
if __name__ == '__main__':
unittest.main()
- Importante estos tests los podemos ejecutar desde dentro del propio sistema django o bien implementarlos para ejecutarlos de manera autonoma
Ejercicio 3
Implementar un test para crear una pregunta.