SpecFlow - 背景说明

Background 关键字用于在功能文件内的所有场景之前复制相同的步骤。我们可以将这些步骤合并到 Background 段下,从而将它们移至背景。

它有助于为场景添加上下文。它可以有多个 Given 步骤。因此,它应在每个场景执行之前执行,但发布任何 Before 钩子。

Background 保留在第一个 ExampleScenario 之前,缩进级别相似。简而言之,它用于声明所有测试的通用步骤。

步骤背景

在上面的例子中,有两个场景,在执行每个场景之前,背景步骤应运行一次。

背景规则

让我们描述一下应用背景 − 时的一些规则

  • 它应该用于定义简单的步骤,除非我们被迫将应用程序置于需要执行复杂步骤的状态。按照项目利益相关者的要求。

  • 应该简短而切合实际。

  • 所有场景也应该简短而切中要点。

背景示例

让我们看一个例子,其中我们在功能文件中的所有测试之前使用了背景步骤。例如,要为应用程序添加普通用户和管理员用户,我们需要在执行场景普通用户添加之前运行以下步骤 −

  • 启动应用程序 URL。

  • 提交用户名和密码

步骤 1:创建功能文件

有关如何创建功能文件的详细信息在 − 章中详细讨论功能文件。

Feature: Member addition

   Background:
      Given launch URL
      Then enter name and password

   Scenario: Normal user addition
      Given user is on normal user addition screen
      When enters normal user details
      Then user should be added as normal user

   Scenario: Admin user addition
      Given user is on admin user addition screen
      When enters admin user details
      Then user should be added as admin user

步骤 2:创建步骤定义文件

有关如何创建步骤定义文件的详细信息,请参阅第 − 章"步骤定义文件"。

using System;
using TechTalk.SpecFlow;
namespace SpecFlowProject1.Features{
   [Binding]
   public class MemberAdditionSteps{
      [Given(@"launch URL")]
      public void GivenLaunchURL(){
         Console.WriteLine("Url launched");
      }  
      [Given(@"user is on normal user additon screeen")]
      public void GivenUserIsOnNormalUserAdditonScreeen(){
         Console.WriteLine("User is on normal user addition screen");
      }   
      [Given(@"user is on admin user addition screen")]
      public void GivenUserIsOnAdminUserAdditionScreen(){
         Console.WriteLine("User is on admin user addition screen");
      }  
      [When(@"enters normal user details")]
      public void WhenEntersNormalUserDetails(){
         Console.WriteLine("User enters normal user details");
      }     
      [When(@"enters admin user details")]
      public void WhenEntersAdminUserDetails(){
         Console.WriteLine("User enters admin user details");
      }      
      [Then(@"enter name and password")]
      public void ThenEnterNameAndPassword(){
         Console.WriteLine("User enters name and password");
      }    
      [Then(@"user should be added as normal user")]
      public void ThenUserShouldBeAddedAsNormalUser(){
         Console.WriteLine("User should be added as normal user");
      }     
      [Then(@"user should be added as admin user")]
      public void ThenUserShouldBeAddedAsAdminUser(){
         Console.WriteLine("User should be added as admin user");
      }
   }
}

步骤 3:执行和结果

选择 SpecFlowProject(2),然后单击 在视图中运行所有测试

执行结果

选择 普通用户添加场景,然后单击 为此结果链接打开其他输出

添加场景

添加场景

在上面的输出中,背景步骤 − 已启动给定 URL然后输入名称和密码 已在实际普通用户场景之前执行。

选择 管理员用户添加 功能,然后单击 为此结果打开其他输出 链接。

管理员添加

在上面的输出中,后台步骤 − 已启动给定 URL然后输入名称和密码 已在实际管理员用户场景之前执行。