¿Cómo llamar a MovedAtAtableCursor en un complemento de prueba web para pasar por un conjunto limitado de filas en una tabla?

StackOverflow https://stackoverflow.com//questions/9704992

Pregunta

Tengo algunas dificultades para comprender cómo el método de acceso "no mueve el cursor automáticamente" funciona para una fuente de datos de prueba web. Y la documentación que parece estar lejos de ser exhaustiva.

En primer lugar, supongamos que hay una prueba web simple con una sola solicitud. Utiliza una fuente de datos llamada DS con una tabla llamada STEPLIST, que contiene 5 filas.

El método de acceso para la tabla está configurado en "No mueva el cursor automáticamente" y la configuración de la prueba actual tiene "One Ejecutando por fila de origen de datos" habilitada en las propiedades de la prueba web. La prueba web no es parte de una prueba de carga.

En estas condiciones, la prueba se ejecuta 5 veces, para cada fila, por lo que básicamente mueve el cursor automáticamente. ¿Esto se pretende?

ahora, a la pregunta práctica, que es el tema de esta publicación.

MI TABLA DE STEPLIST ANTES TIENE, ENTRE OTROS, una columna de identidad y una columna STEPID. La prueba web en cuestión se llama en realidad desde otra prueba web, y se supone que debe ejecutarse solo para las filas de tabla que tienen un STEPID establecido en el contexto de la prueba.

Id  StepId
1   1
2   1
3   2
4   2
5   2

Para lograr esto, seguí las pautas de aquí y escribió un complemento de prueba web con el método de PrewBTest que se ve así:

public override void PreWebTest(object sender, PreWebTestEventArgs e)
{
    string stepId = string.Empty;

    if (e.WebTest.Context.ContainsKey(ContextParameterName))
    {
        stepId = e.WebTest.Context[ContextParameterName].ToString();
    }

    while (e.WebTest.Context["DS.StepList.StepId"].ToString() != stepId)
    {
        e.WebTest.MoveDataTableCursor("DS", "StepList");
    }
}

El código anterior parece funcionar correctamente en la tabla de ejemplo solo si el STEPID tiene el valor "2". Si es "1", entonces MovedAtAtableCursor lanza la excepción de la excepción de WebTESTENDOFDATAException: "No más filas de datos en una tabla de origen de datos con AccessMethod Unique".

Intenté atrapar la excepción y detener la prueba web, pero esto no funciona, ya que la prueba parece nunca terminar.

¿Fue útil?

Solución

Para responder a su primera pregunta: la configuración "No mueva el cursor automáticamente" se aplique a las ejecuciones dentro de una prueba de carga , por lo que el cursor aún se mueve automáticamente durante una prueba web donde está utilizando El ajuste "One Error por fila de origen de datos". Por supuesto, este último ajuste se aplica a prueba web ejecuta solo.

La razón por la que está obteniendo la clave webestenofdataexception es:

  1. La forma en que la fila de origen de datos "se implementa una fila de origen de datos", el motor de prueba de Visual Studio incluye el hecho de que solo hay un cursor de datos para las cinco pruebas; I.E. El estado del cursor se recuerda entre las 5 pruebas.
  2. Cada iteración de prueba incrementa automáticamente el cursor de datos por sí mismo.
  3. Su complemento Avanza el cursor de datos dentro de este conjunto de 5 pruebas, necesariamente agotando las filas disponibles antes de que se completen las 5 pruebas.
  4. La forma más sencilla de hacer que su trabajo de prueba es establecer manualmente el número de iteraciones en lugar de usar "One Ejecutar por fila de origen de datos". Por ejemplo, solo hay dos filas válidas en sus datos, por lo que configure las iteraciones a 2. Sin embargo, esto también es una solución mala porque tendría que contar manualmente las filas y cambiar el valor.

    La siguiente mejor manera es cambiar su webTestPlugin de manera que todo lo que hace es verificar el valor de DS.stEplist.Stepid y hacer WebTest.stop () si no coincide con el valor deseado. De esta manera, las iteraciones no deseadas terminarán de inmediato. Sin embargo, todavía perderán tiempo y agregarán el desorden visual.

    Si la prueba principal siempre debe ejecutarse, y es solo la prueba llamada llamada, luego envuelva la "Llame a WebTest" en una regla condicional "Comparación de cadenas" que verifique el valor de DS.stEPLIST.STEPID contra El parámetro de contexto STEPID, solo llamando a la prueba secundaria cuando el STEPID es correcto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top