es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo compartir el mismo ejemplo de esquema de escenario en toda la funcionalidad y los escenarios?

Objetivo: Quiero que los datos se utilicen en todos los pasos del archivo de características. No está en un solo paso, básicamente quiero ejecutar el escenario con todos los datos del ejemplo.

Escenario Esquema:
Dado mi tabla para la aplicación 1
Ejemplos:
|data|
|123 |
|567 |

Escenario Esquema:
Dado mi tabla para la aplicación 2
Ejemplos:
|data|
|123 |
|567 |

No quiero copiar los mismos Ejemplos en los escenarios y características, ya que requeriría más trabajo si cambia algún dato y además no es una buena práctica. ¿Cómo puedo lograr esto en SpecFlow?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr la reutilización de datos en SpecFlow, puedes crear un archivo separado para tus datos de prueba y luego utilizarlo en tus archivos de características.

    Primero, crea un archivo en tu proyecto que contenga tus datos de prueba. Por ejemplo, puedes crear un archivo CSV llamado “testdata.csv” y colocarlo en el mismo directorio que tus archivos de características.

    Luego, define una clase que representará cada fila de datos en el archivo CSV. Por ejemplo, si tu archivo CSV tiene solo una columna para datos, tu clase se vería así:

    public class TestData
    {
        public string Data { get; set; }
    }
    

    Después, crea un método en un archivo separado que leerá el archivo CSV y devolverá una lista de objetos TestData:

    public static List<testdata> ObtenerDatosDePrueba()
    {
       var datosDePrueba = new List<testdata>();
       using (var lector = new StreamReader(@"testdata.csv"))
       using (var csv = new CsvReader(lector, CultureInfo.InvariantCulture))
       {
           datosDePrueba = csv.GetRecords<testdata>().ToList();
       }
       return datosDePrueba;
    }
    

    Ahora, en tu archivo de características, puedes utilizar los datos de prueba especificando la etiqueta “testdata” seguida del nombre del método que devuelve los datos. Por ejemplo, tu archivo de características se vería así:

    @testdata ObtenerDatosDePrueba
    Esquema del escenario:
       Dado mi tabla para <app>
       Ejemplos:
           |data|
           <% foreach (var itemDeDatos in (List<TestData>)ScenarioContext.Current["testdata"]) { %>
           |<%=itemDeDatos.Data%>|
           <% } %>
    

    Nota que las etiquetas <% y %> se utilizan para incrustar código C# en el archivo de características. Estas etiquetas se utilizan para iterar sobre la lista de objetos TestData e inyectar los datos de prueba en el archivo de características.

    En el código anterior, el bucle <% foreach %> se utiliza para iterar sobre la lista de datos de prueba e inyectar cada fila de datos en el archivo de características.

    Al utilizar este método, puedes reutilizar los mismos datos de prueba en varios escenarios y características sin duplicarlos en cada archivo de características. Esto reduce la redundancia y facilita el mantenimiento de tus datos de prueba.

Comments are closed.