【问题标题】:Passing Fake data as parameters to NUnit test method将假数据作为参数传递给 NUnit 测试方法
【发布时间】:2019-05-01 09:33:35
【问题描述】:

我将 NUnit 与 C# 和 Faker.NET 库一起使用,有什么方法可以将 Faker.NET 生成的假数据作为我的测试方法的参数传递?

编辑:

public static object[,] GetInvalidLoginCredentials()
    {
        object[,] FD = { { new object[] { Name.First(), Internet.Password(10, 12) }, new object[] { "TestUser", "" }, new object[] { "", "TestPassword" } } };
        return FD;
    }

 [Test, Order(1), TestCaseSource("GetInvalidLoginCredentials")]        
    public void InvalidLogin(string userName, string password)
    {
         // Test case code 
    }

运行这个测试时,测试运行器只运行了 2 次:-

  • 第一个带参数("","TestPassword")
  • 第二个带参数("TestUser","")

并且忽略使用来自数据源数组中的第一个对象的参数运行测试,其值是使用 Faker.Net 生成的

【问题讨论】:

  • 你能详细说明你的问题吗?当然,您可以将任何对象作为参数传递。这里有什么问题?
  • 如果您提出更具体的问题,并附上您想要达到的目标的代码示例,则可以让他人更轻松地通过代码示例给出更准确的答案。
  • 当我尝试使用带有静态字段的 TestCaseSource 属性或返回假用户名和密码作为数据源的方法传递参数时,测试运行器会忽略使用这些假数据运行测试用例,但是如果我明确设置测试用例正常运行的数据源的值
  • 请显示一些重现问题的代码。

标签: c# nunit faker


【解决方案1】:

问题与NUnit 相关(而不是Fake.NET),当generated testname 包含具有可在运行之间更改的值的任何参数时发生。

下面的测试用例(不使用Fake.NET)也会遇到同样的问题,因为DateTime 每次都会改变。

new object[] { DateTime.Now.ToString(), "TestUser" }

此测试的(显示)名称为:InvalidLogin("11/12/2018 20:10:59", "TestUser"),但 5 分钟后为 InvalidLogin("11/12/2018 20:15:59", "TestUser")


解决此问题的一种方法是为测试分配一个固定名称,该名称不包括这些动态参数值。

为此,请将GetInvalidLoginCredentials 的返回类型从Object[,] 更改为IEnumerable<TestCaseData>

TestCaseData 类有 SetName 方法来否决测试的名称。

您上面的TestCaseSource方法如下所示,“忽略”测试现在将有一个固定名称InvalidLogin-WithFakeData

    public static IEnumerable<TestCaseData> GetInvalidLoginCredentials()
    {
        TestCaseData[] FD = {                 
            new TestCaseData(Name.First(), Internet.Password(10, 12)).SetName("InvalidLogin-WithFakeData"), 
            new TestCaseData("TestUser", ""), 
            new TestCaseData("", "TestPassword")                
            };

        return FD;
    }

【讨论】:

    猜你喜欢
    • 2015-03-14
    • 1970-01-01
    • 2020-03-16
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    相关资源
    最近更新 更多