【问题标题】:TestCaseSource attribute reads all the test data's of existing tests even if we run only one test.即使我们只运行一个测试,TestCaseSource 属性也会读取现有测试的所有测试数据。
【发布时间】:2018-08-18 02:40:50
【问题描述】:

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

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

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

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

最坏情况解决方案:类下所有测试的单循环相当可观。

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

我是如何实现的:

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

【问题讨论】:

    标签: c# selenium nunit


    【解决方案1】:

    您所要求的是 NUnit 的一个长期讨论但未实现的功能,我们称之为“动态测试用例”。

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

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

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

    恐怕最通用的解决方法是让您停止正在做的事情。也就是说,推迟与数据库的连接,直到测试类开始执行。仅当您知道 数量 个案例时,才有可能这样做。这可能相当于您所说的循环方法。

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

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

    坏消息...目前没有跑步者支持此选项。我已经在https://github.com/nunit/nunit-console/issues/384 提交了一个关于这个问题的问题,请随时加入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-09
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      相关资源
      最近更新 更多