2012-09-05 7 views
5

Uso el método MsTests y Data Driven para realizar pruebas. (Excel es el almacenamiento de datos para las pruebas)Mstest name en su lugar Fila de datos con prueba basada en datos

pruebas resultado no proporcione ninguna información sobre los datos de las pruebas. Por ejemplo:

Resultado como: nombre de prueba (fila de datos 5). Y no está claro para mí.

¿Cómo puedo personalizar el resultado de la prueba de salida? Por ejemplo nombre_prueba (Los datos de prueba (palabra, número o nombre de fila))

Respuesta

4

he encontrado que una solución:

tengo el archivo MyData.xlsx con 1000 filas. Lógica simple: columna "A" = 1, columna "B" = A * 2 + 2.

Filas 5,6,7 y 11,12,13 conteins zero para obtener resultados fallidos.

código fuente de mi prueba:

public TestContext TestContext { get; set; } 

    [TestMethod] 
    [DataSource("System.Data.Odbc", "Dsn=Excel Files;dbq=|DataDirectory|\\TestData\\MyData.xlsx;", "TestDataSheet$", DataAccessMethod.Sequential)] 
    public void ExcelDataSource1000Items() 
    { 
     var errorMessage = "Passed"; 

     int valueA = Convert.ToInt32(TestContext.DataRow["valueA"]); 
     int valueB = Convert.ToInt32(TestContext.DataRow["valueB"]); 
     try 
     { 
      Assert.AreEqual(valueA * 2 + 2, valueB); 
     } 
     catch (Exception exception) 
     { 
      errorMessage = exception.Message; 
     } 
     TestContext.WriteLine(string.Format("valueA: {0}, valueB: {1}, AssertResult: {2}", valueA, valueB, errorMessage)); 
    } 

Después de la prueba de ejecución de la línea de comandos MSTEST (para generar el archivo * .trx) con los parámetros:/testcontainer,/testsettings,/resultsfile que generan archivos * .trx con la prueba resultados.

Y si abrimos el archivo * .trx, podemos ver de mensajes de texto:

<Results> 
<UnitTestResult executionId="cfc325a7-647f-4ef3-bb08-777f7bb3ca37" testId="1dbff80d-1f74-5ea7-35fa-f2ecd1f9b9e4" testName="ExcelDataSource1000Items" computerName="AMDX6" duration="00:00:00.5764248" startTime="2012-09-06T03:21:45.2070571+04:00" endTime="2012-09-06T03:21:46.1251096+04:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="cfc325a7-647f-4ef3-bb08-777f7bb3ca37" resultType="DataDrivenTest"> 
    <Output> 
    <TextMessages> 
     <Message>valueA: 1, valueB: 4, AssertResult: Passed</Message> 
     <Message>valueA: 2, valueB: 6, AssertResult: Passed</Message> 
     <Message>valueA: 3, valueB: 8, AssertResult: Passed</Message> 
     <Message>valueA: 4, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:&lt;10&gt;. Actual:&lt;0&gt;. </Message> 
     <Message>valueA: 5, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:&lt;12&gt;. Actual:&lt;0&gt;. </Message> 
     <Message>valueA: 6, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:&lt;14&gt;. Actual:&lt;0&gt;. </Message> 
     <Message>valueA: 7, valueB: 16, AssertResult: Passed</Message> 
     <Message>valueA: 8, valueB: 18, AssertResult: Passed</Message> 
     <Message>valueA: 9, valueB: 20, AssertResult: Passed</Message> 
     <Message>valueA: 10, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:&lt;22&gt;. Actual:&lt;0&gt;. </Message> 
     <Message>valueA: 11, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:&lt;24&gt;. Actual:&lt;0&gt;. </Message> 
     <Message>valueA: 12, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:&lt;26&gt;. Actual:&lt;0&gt;. </Message> 
     <Message>valueA: 13, valueB: 28, AssertResult: Passed</Message> 
     <Message>valueA: 14, valueB: 30, AssertResult: Passed</Message> 
     <Message>valueA: 15, valueB: 32, AssertResult: Passed</Message> 
     <Message>valueA: 16, valueB: 34, AssertResult: Passed</Message> 
     <Message>valueA: 17, valueB: 36, AssertResult: Passed</Message> 
     <Message>valueA: 18, valueB: 38, AssertResult: Passed</Message> 
     <Message>valueA: 19, valueB: 40, AssertResult: Passed</Message> 
     <Message>valueA: 20, valueB: 42, AssertResult: Passed</Message> 

Estas de mensajes de texto se pueden analizar para generar el informe de prueba. (por ejemplo)

P.S. Lo siento, no puedo agregar capturas de pantalla, porque no tengo 10 o más reputación = \

+0

Sí, estoy de acuerdo. Pero para los primeros datos de prueba, la propiedad TestContext.CurrentTestOutcome devuelve "En progreso". Es correcto para usar la propiedad TestContext.CurrentTestOutcome en el método de prueba. Si contengo "TestContext.WriteLine (TestContext.CurrentTestOutcome.ToString());" en el método TestCleanup, no obtengo nada. –

Cuestiones relacionadas