SpecFlow - 背景插图


应用背景关键字来复制功能文件中所有场景之前的相同步骤。我们可以通过将这些步骤放在背景部分下将它们转移到背景中。

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

背景保留在第一个示例场景之前,处于类似的缩进级别。简而言之,它用于声明所有测试的通用步骤。

步骤背景

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

背景规则

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

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

  • 它应该简短而现实。

  • 所有场景也应该简短扼要。

背景示例

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

  • 启动应用程序 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),然后单击Run All Tests in View

执行结果

选择“普通用户添加方案”,然后单击“为此结果打开附加输出”链接

加法场景

加法场景

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

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

管理员添加

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