Escenario:

Hay un método que genera una contraseña para los estudiantes. Todos los estudiantes deben usar esta contraseña. Necesitamos verificar que todos los tipos de Estudiantes puedan acceder a los exámenes con esta contraseña.

testClass extends BaseClass{
testStudent1(){
  driver.findElement(By.xpath(xpathExpression)).sendKeys(login.generatePassword());
}

testStudent2(){
  driver.findElement(By.xpath(xpathExpression)).sendKeys(login.generatePassword());
}

}

El problema es que estos dos métodos de Estudiante están obteniendo una nueva contraseña. ¿Cómo puedo generar una contraseña una vez y usarla en todo el proyecto? Algo así como la variable de clase.

Disculpe por esa pregunta tan novata.

0
paul 28 feb. 2018 a las 10:32

3 respuestas

La mejor respuesta

Podrías usar un campo estático

testClass extends BaseClass{
private static String pw = null;

testStudent1(){

   if (pw == null) 
          pw = login.generatePassword();

   driver.findElement(By.xpath(xpathExpression)).sendKeys(pw);

}

Es posible que deba considerar la seguridad de subprocesos si se usa en un entorno de subprocesos múltiples

2
Scary Wombat 28 feb. 2018 a las 07:39

Hay muchas soluciones.

Dado el ejemplo anterior, agregaría un public static final String a su BaseClass.

class BaseClass {
    public static final String studentPassword = new Login().generatePassword();
}

En este caso, sus pruebas se verían así:

testClass extends BaseClass{
testStudent1(){
  driver.findElement(By.xpath(xpathExpression)).sendKeys(studentPassword);
}

testStudent2(){
  driver.findElement(By.xpath(xpathExpression)).sendKeys(studentPassword);
}

}

También haría generatePassword() un método static.

2
Fenio 28 feb. 2018 a las 07:37

Puede usar una variable estática para almacenar la contraseña generada solo una vez,

Tu puedes hacer,

public static String pswd = login.generatePassword();

Y use esto pswd como parámetro de función.

0
Amit Gurbani 28 feb. 2018 a las 07:36