Saltar al contenido

Cómo ejecutar el archivo de características de pepino en paralelo

Basta ya de investigar por todo internet porque estás al espacio perfecto, tenemos la solución que quieres pero sin liarte.

Solución:

Actualizar: La versión 4.0.0 está disponible en el repositorio central de maven con un montón de cambios. Para más detalles, vaya aquí.

Actualizar: La versión 2.2.0 está disponible en el repositorio central de maven.

Puede utilizar el complemento de código abierto cucumber-jvm-parallel-plugin, que tiene muchas ventajas sobre las soluciones existentes. Disponible en el repositorio de maven

   
     com.github.temyers
     cucumber-jvm-parallel-plugin
     2.1.0
   
  1. Primero debe agregar este complemento con la configuración requerida en el archivo pom de su proyecto.

    
      com.github.temyers
      cucumber-jvm-parallel-plugin
      2.1.0
      
         
         generateRunners
         generate-test-sources
         
           generateRunners
         
         
             
             
             foo, bar
             $project.build.directory/generated-test-sources/cucumber
              
               src/test/resources/features/
              
              target/cucumber-parallel
              
              json
              
              true
              
              true
              
             
             
             false
              
             false
              
            simple
            
            ParallelcIT
            
            SCENARIO
            
            src/test/resources/cucumber-custom-runner.vm
            
           
         
       
    
  2. Ahora agregue el complemento de abajo justo debajo del complemento de arriba que invocará las clases de corredor generadas por el complemento de arriba

        
            org.apache.maven.plugins
            maven-surefire-plugin
            2.19
             
                5
                true
                
                    **/*IT.class
                
            
        
    
  3. Los dos complementos anteriores harán magia para la prueba de pepino que se ejecuta en paralelo (siempre que su máquina también tenga soporte de hardware avanzado).

  4. Estrictamente proporcionado n aquí ‘n’ es directamente proporcional a 1) Soporte de hardware avanzado y 2) sus nodos disponibles, es decir, instancias de navegador registradas en HUB.

  5. Uno de los cambios importantes y más importantes es que su clase WebDriver debe ser COMPARTIDO y deberías no implemente el método driver.quit (), ya que el cierre se realiza mediante el gancho de cierre.

    import cucumber.api.Scenario;
    import cucumber.api.java.After;
    import cucumber.api.java.Before;
    import org.openqa.selenium.OutputType;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebDriverException;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.support.events.EventFiringWebDriver;
    
    public class SharedDriver extends EventFiringWebDriver 
        private static WebDriver REAL_DRIVER = null;
    
    
    
        private static final Thread CLOSE_THREAD = new Thread() 
            @Override
            public void run() 
                REAL_DRIVER.close();
            
        ;
    
        static 
            Runtime.getRuntime().addShutdownHook(CLOSE_THREAD);
        
    
        public SharedDriver() 
            super(CreateDriver());
        
    
        public static WebDriver CreateDriver() 
            WebDriver webDriver;
            if (REAL_DRIVER == null)
                webDriver = new FirefoxDriver();
            setWebDriver(webDriver);
            return webDriver;
        
    
        public static void setWebDriver(WebDriver webDriver) 
            this.REAL_DRIVER = webDriver;
        
    
        public static WebDriver getWebDriver() 
            return this.REAL_DRIVER;
        
    
        @Override
        public void close() 
            if (Thread.currentThread() != CLOSE_THREAD) 
                throw new UnsupportedOperationException("You shouldn't close this WebDriver. It's shared and will close when the JVM exits.");
            
            super.close();
        
    
        @Before
        public void deleteAllCookies() 
            manage().deleteAllCookies();
        
    
        @After
        public void embedScreenshot(Scenario scenario) 
            try 
                byte[] screenshot = getScreenshotAs(OutputType.BYTES);
                scenario.embed(screenshot, "image/png");
             catch (WebDriverException somePlatformsDontSupportScreenshots) 
                System.err.println(somePlatformsDontSupportScreenshots.getMessage());
            
        
    
    
  6. Teniendo en cuenta que desea ejecutar más de 50 subprocesos, es decir, el mismo número de instancias del navegador están registradas en HUB, pero Hub morirá si no tiene suficiente memoria, por lo tanto, para evitar esta situación crítica, debe iniciar el hub con -DPOOL_MAX = 512 (o más grande) como se indica en la documentación de grid2.

    Really large (>50 node) Hub installations may need to increase the jetty threads by setting -DPOOL_MAX=512 (or larger) on the java command line.

    java -jar selenium-server-standalone-.jar -role hub -DPOOL_MAX=512

El pepino no admite la ejecución paralela de fábrica. Lo he intentado, pero no es amistoso.

  1. Tenemos que usar la capacidad de maven para invocarlo en paralelo. Enlace de referencia
  2. También hay un proyecto de github que utiliza un complemento personalizado para ejecutarse en paralelo. Consulte cucumber-jvm-paralelo-plugin

Si todo lo que espera es poder ejecutar varias funciones en paralelo, puede intentar hacer lo siguiente:

  • Duplique la clase AbstractTestNGCucumberTests en su proyecto de prueba y configure el attribute parallel=true al @DataProvider método anotado.

Desde el defecto dataprovider-thread-count de TestNG es 10 y ahora que ha indicado a TestNG que ejecute features en paralelo, debería empezar a ver que sus archivos de características se ejecutan en paralelo.

Pero entiendo que los informes de Cucumber no son intrínsecamente seguros para subprocesos, por lo que sus informes pueden parecer confusos.

Tienes la posibilidad mostrar este post si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *