2011-02-18 7 views
8

¿Cómo puedo ejecutar una prueba "dentro de PHP" en lugar de usar el comando 'phpunit'? Ejemplo:Ejecuta un caso de prueba PHPUnit Selenium programáticamente ("dentro de PHP")

<?php 
require_once 'PHPUnit/Extensions/SeleniumTestCase.php'; 
class MySeleniumTest extends PHPUnit_Extensions_SeleniumTestCase { 

    protected function setUp() { 
     $this->setBrowser("*firefox"); 
     $this->setBrowserUrl("http://example.com/"); 
    } 

    public function testMyTestCase() { 
     $this->open("/"); 
     $this->click("//a[@href='/contact/']"); 
    } 

} 

$test = new MySeleniumTest(); 
//I want to run the test and get information about the results so I can store them in the database, send an email etc. 
?> 

O tengo para escribir la prueba en un archivo, invocar PHPUnit a través del sistema()/exec() y analizar la salida? :(

Respuesta

4

sólo tiene que utilizar el Driver que se incluye

require_once 'PHPUnit/Extensions/SeleniumTestCase/Driver.php'; 
//You may need to load a few other libraries. Try it. 

Luego hay que configurarlo como SeleniumTestCase does:.

$driver = new PHPUnit_Extensions_SeleniumTestCase_Driver; 
$driver->setName($browser['name']); 
$driver->setBrowser($browser['browser']); 
$driver->setHost($browser['host']); 
$driver->setPort($browser['port']); 
$driver->setTimeout($browser['timeout']); 
$driver->setHttpTimeout($browser['httpTimeout']); 

A continuación, sólo:

$driver->open('/'); 
$driver->click("//a[@href='/contact/']"); 
+0

O no lo entiendo, o me malentendió :) El propósito de esto es almacenar las pruebas en una base de datos y ejecutarlas "a pedido". También quiero enviar los resultados por correo electrónico. Por lo tanto, necesito una manera de tomar una prueba de la base de datos (lo suficientemente fácil), ejecutar el caso de prueba y obtener los resultados (para el almacenamiento de db y los contenidos del correo electrónico). –

+1

@ arex1337 - ¡¿Cuál es la diferencia ?! Todo lo que necesita para almacenar en DB son los procedimientos de prueba (métodos de asignación - abrir(), hacer clic() etc + sus parámetros), no la configuración del controlador. Simplemente lea los procedimientos de prueba de Db y aplíquelos una vez que tenga el controlador operativo, como muestra la respuesta anterior ... El tipo acaba de decirle que no necesita crear/extender ninguna clase, solo use una biblioteca/clase ya existente. –

3

He aquí un ejemplo desde el phpunit docs:

<?php 
require_once 'PHPUnit/Framework.php'; 

require_once 'ArrayTest.php'; 
require_once 'SimpleTestListener.php'; 

// Create a test suite that contains the tests 
// from the ArrayTest class. 
$suite = new PHPUnit_Framework_TestSuite('ArrayTest'); 

// Create a test result and attach a SimpleTestListener 
// object as an observer to it. 
$result = new PHPUnit_Framework_TestResult; 
$result->addListener(new SimpleTestListener); 

// Run the tests. 
$suite->run($result); 
?> 

El código de SimpleTestListener está en la misma página.

Cuestiones relacionadas