【问题标题】:Data-Driven Unit Test with MSTest : How to read and validate records from CSV file?使用 MSTest 进行数据驱动的单元测试:如何从 CSV 文件中读取和验证记录?
【发布时间】:2020-03-24 07:00:22
【问题描述】:

我使用 MsTest 和数据驱动方法进行单元测试。

到目前为止,我的单元测试项目中添加了一个包含 5 行的 Data.csv 文件,我想验证并输出每个相应 orgId 和用户名的 UserId。

例如,对于 Orgid '80010' 和用户名 'Malika' - 预期为 userid = 0000000047

data.csv file

如何设置数据驱动测试方法以从 .CSV 文件中读取和验证正确的 userId?

C# Code:

using System;

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace AuthenticationServiceTest
{
    [TestClass]
    public class UT_GetUserIdFromUserName
    {
        public TestContext TestContext { get; set; }

        [TestMethod]
        [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", @"Data\Data.csv", "Data#csv", 
        DataAccessMethod.Sequential)]
        public void TestMethod1()
        {
            // Arrange
            int ExpUserId = Convert.ToInt32(TestContext.DataRow["0000000047"]);
            int orgId = Convert.ToInt32(TestContext.DataRow[1]);
            int username = Convert.ToInt32(TestContext.DataRow[2]);



            // Act
            string UserId = string.Empty;

            // Assert
            Assert.AreEqual(ExpUserId, UserId);
            Console.WriteLine("Expected UserId: " + ExpUserId);
            Console.WriteLine("Actual UserId: " + UserId);

        }

    }
    }

【问题讨论】:

    标签: csv mstest data-driven


    【解决方案1】:

    您不必选择特定的 ID,单元测试引擎将负责逐行解析文件。 您必须使用 TestContext.DataRow["column" or index] 从 CSV 文件的特定列中获取值。

    int ExpUserId = Convert.ToInt32(TestContext.DataRow["0000000047"]); 
    

    应该是

    int ExpUserId = Convert.ToInt32(TestContext.DataRow[0]); 
    

    或

    int ExpUserId = Convert.ToInt32(TestContext.DataRow["userId"]); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 2021-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多