即使我们只运行一个测试,TestCaseSource属性也会读取现有测试的所有测试数据。

时间:2018-03-09 13:47:46

标签: c# selenium nunit

我的要求:我想为单个案例和执行读取多个TestData,所有TestData都应该自行发生。

TestCaseSource属性提供了这些要求,但并不完全。

使用TestDataSource,它获取不需要执行的测试的TestData。如果有100个测试并且在一个测试上运行,则它将获取所有测试的TestData。

解决方案需要:在每次测试开始执行时,是否有任何可能的方法来读取每个测试的TestData。

最坏情况解决方案:在课堂上进行所有测试的单循环是相当可观的。

如果将测试划分为多个类别,并且在根据类别运行测试时,则会从不同类别中获取其他测试的数据。

我如何实施:

OleDbConnection用于连接excel。 对于每个类,使用单独的excel文档。 对于每个测试,使用单独的工作表。 多个测试数据在不同的行中给出。

1 个答案:

答案 0 :(得分:0)

你要求的是NUnit的一个长期谈论但未实现的功能,我们将其称为“动态测试用例”。

“动态”这个名称可能不是最好的选择,因为它可能意味着很多东西,但它是我们一直在使用的东西。这意味着没有加载测试用例的数据,并且在执行点之前不会生成案例本身。有了这样的功能,事情就会按照您想要的方式工作,只有为您选择执行的案例加载数据。

但是对于现有的“静态”测试用例(也是一个非常糟糕的名称) all ,在我们选择要运行的情况之前,会加载这些案例。如果您可以想象一个GUI运行器,这是您期望看到的:在执行任何测试之前显示的所有测试。事实上,这就是设计原样的原因:支持需要首先显示所有案例的跑步者。

“动态”功能存在很多设计问题,因此无需在此处进行介绍。您正在寻找一种可以帮助您的解决方法。

我担心,最常见的解决方法是让你停止做你正在做的事情。也就是说,推迟连接到DB,直到测试类开始执行。只有在您知道数量的情况下才能进行此操作。这可能等同于您所说的循环方法。

其他选项可能会有所不同,具体取决于您实际运行测试的方式:nunit3-console,vs adapter等。如果您编辑问题以指明适用的内容,我会尝试提出替代方案。

更新(2018年3月14日): 框架接受“LOAD”(全部大写)的包设置,其值包含您要运行的IList个测试。通常,您可以使用类的全名或包含多个类的命名空间。

坏消息......目前没有一名选手支持此选项。我已经在https://github.com/nunit/nunit-console/issues/384提出了一个问题,请随意报名。