Mstest名称改为具有数据驱动测试的数据行 [英] Mstest name instead Data Row with Data-Driven testing

查看:90
本文介绍了Mstest名称改为具有数据驱动测试的数据行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I use MsTests and Data Driven approach for testing. (Excel is data storage for tests)

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

tests result dont provide any information about tests data. For example:

结果如下: 测试名称(数据行5).对我来说还不清楚.

Result look as: testname (Data row 5). And it is not clear for me.

我如何自定义输出测试结果? 例如 测试名(测试数据(单词,数字或命名的行))

How can i customise output test result? For example testname (Test data (word, number, or row named))

推荐答案

我只找到一种解决方案:

I found only one solution:

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

I have MyData.xlsx file with 1000 rows. Simple logic: "A" column = 1, "B" column = A*2+2.

5,6,7和11,12,13列因结果失败而归零.

Rows 5,6,7 and 11,12,13 conteins zero for make a failed results.

我的测试的源代码:

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文件.

After execution test from MsTest command line (for generating *.trx file) with parameters: /testcontainer, /testsettings, /resultsfile we generate *.trx file with test results.

如果我们打开此* .trx文件,我们会看到TextMessages:

And if we open this *.trx file, we can see 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可以被解析以生成测试报告. (例如)

These TextMessages can be parsed to generate test report. (for example)

P.S.抱歉,我无法添加屏幕截图,因为我没有10个或更多信誉= \

P.S. Sorry, i can not add screenshots, because i dont have 10 or more reputation =\

这篇关于Mstest名称改为具有数据驱动测试的数据行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆