在一个功能文件中添加多个标签

时间:2019-04-11 14:38:28

标签: c# specflow

我有一个具有不同场景的功能文件。为每个功能文件添加多个标签是个好主意吗?

library(tidyverse)

list1 = list("16403074 L3 2", "16603059 L3 2")
list2 = list("0 1", "0 1")
list3 = list("1.7 0.75514 -1.62403 0.06183" ,"1.7 0.42851 0.52817 0.08137")

data <- tibble(strings = c(list1, list2, list3))

data %>%
 unnest()

我将能够一次在命令行中使用一个或多个标签来执行测试吗?

1 个答案:

答案 0 :(得分:1)

是的,在功能文件中包含多个标签是常见的用例。您可以使用标签对测试进行分类。不必一次运行多个标签/类别,而是可以通过将标签放置在正确的位置来构建功能文件,以运行所需的所有测试。

这里有两个例子:

  • 示例1:您具有一个带有示例功能(场景大纲)。每次有人提交(@ci)时,都应该测试该功能最常见的快乐路径。较不常见的快乐路径应每天(@daily)进行测试,稀有路径可以每周(@weekly)进行测试。
Feature: Buy the product
  The product can be bought.

  Scenario Outline: A customer buys the product
    Given product <Product>
      And payment method <PaymentMethod>
     When customer clicks buy
     Then product ends up in basket

    @ci @daily @weekly
    Examples: 
    | Product  | PaymentMethod |
    | Book     | Cash          |

    @daily @weekly
    Examples: 
    | Product  | PaymentMethod |
    | Software | Visa          |
    | Music    | MasterCard    |

    @weekly
    Examples: 
    | Product  | PaymentMethod |
    | Watch    | DinersClub    |
    | Hitman   | BitCoin       |

我现在可以设置我的CI / CD工具来运行

dotnet test --filter TestCategory=ci

每次有人提交。我可以安排这个时间

dotnet test --filter TestCategory=daily

每天运行一次。最后,我可以将其设置为每周运行:

dotnet test --filter TestCategory=weekly

请注意,每日类别也将运行ci测试,而每周类别将运行所有测试,因为标签也在那里。因此,ci考试是一项肤浅但快速的测试,而每周一次是最彻底的测试,因为它可以运行所有方案。

  • 示例2:您具有可以满足多个要求的功能。某些场景可用于一次测试多个需求。
Feature: Start and stop engine
  The engine has a start/stop mechanism that can be triggered by software.

  @req123 @req124
  Scenario: Start engine
    Given engine is stopped
     When operator clicks on start button
     Then engine starts

  @req123 @req124
  Scenario: Stop engine
    Given engine is started
     When operator clicks on stop button
     Then engine starts

  @req123
  Scenario: Start engine
    Given engine is stopped
     When operator clicks on stop button
     Then nothing happens

如果我们想证明要求123,我们将运行:

dotnet test --filter TestCategory=req123

所有方案都将运行。如果我们想证明要求124,我们将运行

dotnet test --filter TestCategory=req124

第两个方案将运行。最后一个将被跳过,因为它没有被req124标记。