使用NUnit进行数据驱动测试

时间:2012-05-10 10:07:54

标签: c# automated-tests nunit-2.5

需要有关数据驱动的测试自动化的建议。

我正在使用C#ann Nunits为使用MVC开发的Web应用程序进行测试自动化。我们正在使用Selenium Web驱动程序。

作为数据驱动测试的一部分,哪一个适用于输入测试数据的是xml文件或sql server db。

如果我们使用db,那么为数据库连接提供一些ORM(NHibernate)是件好事。

由于

5 个答案:

答案 0 :(得分:3)

data-driven-test-in-nunit-with-csv

Parameterized Tests in NUnit

如何使用

   [Test, TestCaseSource("GetTestData")]
    public void MyExample_Test(int data1, int data2, int expectedOutput)
    {
        var methodOutput = MethodUnderTest(data2, data1);
        Assert.AreEqual(expectedOutput, methodOutput, string.Format("Method failed for data1: {0}, data2: {1}", data1, data2));
    }


    private IEnumerable<int[]> GetTestData()
    {
         while (data.ReadNext()) // Use your custom logic based on Stream to get new data (basically Implement IEnumerator on data class)
          yield return new[] { data.Current };
    }

其他测试框架
MS Test
XUnit

答案 1 :(得分:0)

查看您的账单中的任何一个。

如果你有一个好的ORM,并且你对它感到满意,那就使用它。

如果您对XML更熟悉,那就去做吧。

当它成为问题时,请考虑长时间运行。你没有用Selenium编写单元测试,你正在编写集成UI测试。因此,它们通常在晚上运行,因此长时间运行很少成为问题。

就个人而言,在这里,我们使用LINQ2SQL,对于我跳转到SQL服务器数据库的任何数据,它运行正常 - 提供您的查询并不愚蠢,几乎没有性能损失。

答案 2 :(得分:0)

我的建议是将测试数据捆绑到单元测试夹具本身。每种测试方法的设置将设置测试的初始状态(数据);并且拆解将清理它(如有必要)。

尝试维护外部数据文件并使其与单元测试代码保持一致是一件麻烦事。 (YMMV - 这是我个人经验的建议。)

答案 3 :(得分:0)

答案 4 :(得分:0)

考虑将测试数据存储在嵌入式json文件中,而不是将Excel或数据库中存储。

存储在json中将具有以下好处。

  1. 由于架构,测试代码无障碍
  2. 没有连接问题
  3. 测试数据将作为您项目的一部分提供

This为管理嵌入式json文件中的测试数据提供了良好的支持