【问题标题】:Mstest name instead Data Row with Data-Driven testingMstest 名称而不是 Data Row 和数据驱动测试
【发布时间】:2012-09-05 15:25:19
【问题描述】:

我使用 MsTests 和数据驱动方法进行测试。 (Excel是用于测试的数据存储)

测试结果不提供有关测试数据的任何信息。 例如:

结果如下: testname(数据行 5)。这对我来说还不清楚。

如何自定义输出测试结果? 例如 testname(测试数据(单词、数字或行名))

【问题讨论】:

    标签: mstest data-driven


    【解决方案1】:

    我只找到了一种解决方案:

    我有 1000 行的 MyData.xlsx 文件。简单逻辑:“A”列=1,“B”列=A*2+2。

    第 5、6、7 和 11、12、13 行包含零,表示结果失败。

    我的测试源代码:

    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));
        }
    

    从 MsTest 命令行(用于生成 *.trx 文件)执行测试后,使用参数:/testcontainer、/testsettings、/resultsfile 我们生成带有测试结果的 *.trx 文件。

    如果我们打开这个 *.trx 文件,我们可以看到 TextMessages:

    <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>
    

    这些TextMessages可以被解析生成测试报告。 (例如)

    附:抱歉,我无法添加截图,因为我没有 10 或更多的声望 =\

    【讨论】:

    • 是的,我同意。但是对于第一个测试数据 TestContext.CurrentTestOutcome 属性返回“进行中”。在测试方法中使用 TestContext.CurrentTestOutcome 属性是正确的。如果我包含“TestContext.WriteLine(TestContext.CurrentTestOutcome.ToString());”在 TestCleanup 方法中,我什么也没得到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多