Specflow:从动态测试数据集中单独执行测试

时间:2017-09-05 14:19:05

标签: c# .net resharper bdd specflow

我的要求是使用specflow成功代码200单独测试URL的动态列表

当前方法: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| 

新方法:我正在考虑动态地从网络服务获取网址列表,而不是在方案大纲中获取硬编码。

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列表。 < / p>

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

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

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

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