【问题标题】:Specflow: executing tests individually from dynamic test data setSpecflow:从动态测试数据集中单独执行测试
【发布时间】:2017-09-05 14:19:04
【问题描述】:

我的要求是使用规范流单独测试 URL 的动态列表以获取成功代码 200

当前方法: URL 列表在下面的场景大纲中硬编码,其中我能够成功测试每个 URL。在这里,我的测试运行了场景大纲中存在的尽可能多的 URL,如果有的话,我可以轻松识别失败的测试。

 Scenario Outline: URL test
      Given list of URL's
      When I launch each URL 
      Then I should expect 200 HTTP status code

      Examples:
        | URL    |
        |  url 1 |  
        |  url 2 |  
        |  url..n| 

新方法:我正在考虑从网络服务动态获取 URL 列表,而不是在场景大纲中进行硬编码。

Scenario Outline: URL test
          Given a service to get list of URL's
          When I call the API get
          Then I should expect 200 HTTP status code

通过上述方法,我能够获取 URL 列表,并通过迭代能够单独启动它们。这里的问题是由于没有场景大纲,在单个测试中,将执行完整的 URL 列表。

我需要一种方法来创建动态数据集,并且每个 URL 测试都将在其自己的测试方法中进行,而不是在单个测试方法中执行 URL 列表。

使用的工具: C#、NUnit、Specflow、Resharper、Visual Studio

我正在使用 ReSharper 来执行我的测试,并查看了动态表/实例概念。

【问题讨论】:

  • 您为什么要将此作为 SpecFlow 场景来实现?对其使用简单的单元测试。
  • 我们有带有 specflow 的自动化测试框架,所以利用相同的框架!

标签: c# .net resharper bdd specflow


【解决方案1】:

由于我(还)不能添加 cmets,我将提供我的评论作为答案。

您可能不应该在这种情况下使用场景。场景旨在从业务角度(即业务价值)描述系统的行为。

您似乎想确保 uri 列表的响应正常。这听起来更像是内部集成测试,而不是实际的业务验证。

我建议将它放在一个集成测试中。在那里,您可以简单地创建失败 uri 的集合。在测试结束时,您可以简单地断言集合是否包含 0 个元素。

【讨论】:

  • 感谢您的回答,我已经按照您的建议自动化了这个案例。我知道我的案例与商业前景无关,我想从 specflow 场景中了解我只是在探索我们如何实现!
【解决方案2】:

您无法在测试执行期间动态生成表数据,因为 .cs 文件已经编译。

改为编写参数化单元测试。

当然,您也可以编写一个工具来解析您的网址、重写 .feature 文件、重建 SpecFlow 解决方案并运行测试。杰夫 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 2019-04-29
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    相关资源
    最近更新 更多