Selenium: La mejor forma de probar las características de una aplicación con 2 usuarios diferentes (NUnit, C#)
Estoy buscando una forma limpia de probar todas las funcionalidades en la página web con 2 usuarios diferentes.
Un usuario es el administrador y el segundo es un usuario normal.
Aquí está el resumen de mis pruebas de Selenium:
Como puedes ver, tenemos 3 funcionalidades diferentes en la página web:
- UnlockInstruction
- Tac
- UploadCodes
Cada una de estas funcionalidades tiene su propia clase de prueba con su propio WebDriver para poder ejecutar las pruebas en paralelo.
Cada uno de estos archivos de prueba llama a la clase de inicio de sesión (Login Class) en el SetUp.
Lo que hace la clase de inicio de sesión es:
- Abrir el sitio web con “goToUrl”
- Obtener el nombre de usuario y la contraseña que se almacena en una herramienta de administración de contraseñas
- Utilizar Selenium para ingresar el nombre de usuario, contraseña y hacer clic en iniciar sesión
- Esperar hasta que se cargue la página después de iniciar sesión y volver a los métodos de prueba
Todo funciona perfectamente cuando lo pruebo para un usuario. Todas las pruebas se ejecutan en paralelo.
Ahora quiero probar todas las mismas funcionalidades con el usuario administrador.
La única forma que se me ocurre es simplemente crear otra clase de inicio de sesión que obtenga las credenciales del otro usuario y también copiar las 3 clases de prueba, de modo que las 6 pruebas se ejecuten en paralelo.
Pero en mi opinión, no es una solución limpia, porque estaría copiando 4 archivos que tendrían casi el mismo código 1:1.
davy.ai
Para evitar duplicar las clases de prueba y crear una clase de inicio de sesión separada para el usuario administrador, podemos modificar la clase de inicio de sesión para que acepte un argumento para el nombre de usuario y la contraseña. Luego, en cada una de las clases de prueba de características, podemos instanciar dos objetos de inicio de sesión con las credenciales del usuario administrador y normal y utilizarlos adecuadamente en cada método de prueba.
Aquí tienes un ejemplo:
Clase de inicio de sesión:
Clases de prueba de características:
Al pasar las credenciales como argumentos al atributo TestFixture e instanciar dos objetos de inicio de sesión en el constructor, podemos evitar duplicar las clases de prueba y mantener el código limpio. Además, al aprovechar las capacidades de prueba paralela de NUnit, podemos ejecutar las pruebas aún más rápido.