Estoy tratando de usar todas estas cosas juntas para ejecutar pruebas paralelas en un cromo sin cabeza:
Docker, Selenio, Pytest
Sin embargo, me pregunto dónde tiene sentido ejecutar la parte paralela del sistema.
Docker puede hacer esto (usando la cuadrícula de selenio). Ambos se pueden usar para ejecutar pruebas de selenio paralelas (y distribuidas). p.ej
https://github.com/elgalu/docker-selenium
https://github.com/zalando/zalenio
También Pytest tiene su propia forma de ejecutar pruebas paralelas (usando pytest-xdist), por ejemplo
http://pytest.org/dev/xdist.html
¿Sería más fácil ejecutar 10 pytest-xdist paralelos que ejecutar 10 contenedores docker?
Agradecería saber las ventajas/desventajas de cada uno.
Además, ¿alguna idea de cómo usar estas cosas juntas? La información sobre esto parece muy escasa.
Usted crea tantos contenedores como necesite/quiera, luego informará a xdist de las direcciones IP de los contenedores y si necesita pruebas de interfaz de usuario, entonces pytest tiene pytest-splinter y si necesita escenarios bdd, puede usar pytest-bdd.
Sin embargo, me pregunto dónde tiene sentido ejecutar la parte paralela del sistema.
Cada parte contribuirá a que se produzca el paralelismo. Necesita Selenium HUB para organizar los navegadores disponibles para ejecutar una prueba. Puede tener n navegador ejecutándose en modo sin cabeza, cada uno aislado en su propio contenedor.
¿Sería más fácil ejecutar 10 pytest-xdist paralelos que ejecutar 10 contenedores docker?
Pytest paralelizará la ejecución de la prueba por usted, pero no la creación de instancias y la orquestación para los navegadores disponibles.
Resumiendo:
Problema: debe ejecutar pruebas de interfaz de usuario (Selenium) en paralelo. Necesitará N cantidad de navegadores disponibles para ejecutar esta prueba.
Solución: puede iniciar N nodos de cromo sin cabeza desde la ventana acoplable. Problema: Tienes 10 opciones de conexión diferentes para dar a tus conductores en tus pruebas.
Solución: Inicie Selenium Hub y deje que los gestione por usted. Por lo tanto, debe preocuparse por un solo punto de conexión y luego le dará el navegador libre para ejecutar esa prueba.
Problema: ejecuta sus pruebas ahora y solo se está utilizando un navegador. Solución: use xdist para indicar a pytest que ejecute X cantidad de pruebas por vez. X en este caso puede coincidir con N número de navegadores disponibles.