La solución para esto realmente depende de cómo se ve el archivo de datos. Si pudieras publicar eso, podríamos ayudarte más.
Por el momento lo asumo, ya que phpunit por naturaleza es un marco de prueba de unidades individualizado que no intenta ejecutar múltiples navegadores simultáneamente, pero solo desea reservar la opción para cambiar los navegadores como veas conveniente.
Tienes razón en que deberías estar usando setBrowser en setUp. Cuando se ejecuta PHPUnit siempre ejecutará setUp primero y tearDown() al último. Una buena práctica aquí es crear su propia clase personalizada de prueba-unidad donde puede personalizar estos métodos.
class customUnitTest extends PHPUnit_Extensions_Selenium2TestCase {
public $browser = "firefox";
public function setUp() {
$this->setBrowser("*".$browser);
}
}
Ahora, cuando usted está escribiendo una prueba de ampliar su clase de prueba personal y establecer el navegador a tal efecto
class newTest extends customUnitTest {
$this->browser = "safari";
public function testBlah {
blah blah...
}
}
de instalación se ejecuta en ejecución y que se tire en la variable navegador. De forma predeterminada obtendrá Firefox, pero si algunas pruebas se prueban de forma más adecuada en otros navegadores, tiene esa opción.
Si está buscando poder cambiar todos los navegadores en todas las pruebas al mismo tiempo, debería considerar asignar el valor del navegador en función de una variable de entorno.
class customUnitTest extends PHPUnit_Extensions_Selenium2TestCase {
try {
public $browser = getenv("SELENIUM_BROWSER");
} catch (Exception $e) {
public $browser = "firefox";
}
public function setUp() {
$this->setBrowser("*".$browser);
}
}
Con esta configuración podemos cambiar el navegador para cada prueba que no ha modificable el navegador en sí mismo cambiando la variable de entorno SELENIUM_BROWSER. De esta forma, podemos ejecutar el mismo código en diferentes servidores con diferentes navegadores predeterminados sin tener que volver a escribir nada.
Tenga en cuenta que la herencia múltiple no es una buena práctica. Puede llevar a código frágil e incluso a amenazas de seguridad si no se aplican los métodos/variables correctamente. Sin embargo, en este caso es útil porque podemos definir los métodos de framework PHPUnit como queramos, y obtenemos todos los métodos base de selenio dentro de nuestra prueba. Así que para ejecutar un método de selenio por defecto que acabamos de escribir
$this->open("www.google.com");
Este es un método muy diferente que el enfoque general de la asignación de selenio a un objeto, como la prueba de que escribe es el objeto de selenio, pero parece más php apropiada , especialmente para este caso de uso.
Bien, incluso si getenv y herencia no son soluciones fáciles. De todos modos, muestra lo que puedo hacer. Gracias. PS. Espero que la implementación de Selenium2TestCase haya cambiado desde que escribí el problema ... o lo haré. –