SpecFlow supports Data Driven testing by default, thanks to the Scenario outline and Examples section. With these keywords, SpecFlow enables simple Data Driven testing to be completed without requiring any changes to the C# file. We will learn how to use examples to implement Scenario Outlines in Data Driven Testing. What is the keyword?
Only the Example keyword can be used with the Scenario Outline keyword.
• Scenario Outline – Run the same scenario for two or more different sets of test data with this. In our scenario, for example, if you'd like to register another user, you can data drive a same scenario twice.
• Examples – All scenario outlines must be followed by the Examples section. This section contains the data that needs to be passed on to the scenario.
Data Driven Testing with Examples
- 1) In the Feature file, change the Scenario keyword to Scenario
Outline.
- 2) Enter the Example Data just below the Feature File's Users
Scenario.
- Examples:
| username | statuscode |
| 1 | 200 |
| 100 | 404 |
Users.feature file
Feature: Users
Operations about user
Background:
Given I perform api operation on petstore server https://petstore.swagger.io/v2/
Scenario
Outline: GET operation with example
When I perform GET operation for user using endpoint "/user/{username}" by using
User name "<username>"
Then I should see the response as successful with status code as <statuscode> ok
Examples:
| username | statuscode |
| Raju | 200 |
| Ramesh | 404 |
| | 405 |
UsersSteps.cs file
using Microsoft.VisualStudio.TestTools.UnitTesting; //For asserting
using Newtonsoft.Json.Linq; //For Json
object creation
using RestSharp; //For RestSharp operation
using System; //for Basic C# package
using TechTalk.SpecFlow; //for BDD
package
namespace APIAutomation.Features
{
[Binding] //It's
binding the feature file with step definition file
public class UsersSteps
{
public RestClient client;
public RestRequest request;
public IRestResponse response;
[Given(@"I
perform api operation on petstore server ""(.*)""")]
public void
GivenIPerformApiOperationOnPetstoreServer(string baseUrl)
{
//Make a Request that points to the Service Endpoint.
client = new RestClient(baseUrl);
}
[When ( @"I perform GET operation for user using endpoint
""(.*)"" by using User name
""(.*)""")]
public void
WhenIPerformGETOperationForUserUsingEndpointByUsingUserName(string endpoint, string username)
{
//Create a GET request with the given endpoint.
request = new RestRequest(endpoint, Method.GET);
//passing url
segment
request.AddParameter("username", username,
ParameterType.UrlSegment);
//execute the
request
response = client.Execute(request);
}
[Then(@"I should see the response as successful with status code
as (.*) ok")]
public void
ThenIShouldSeeTheResponseAsSuccessfulWithStatusCodeAsOk(int status)
{
//Converting the response status code to integer format
int statusCode = (int)response.StatusCode;
//Asserting the response's status code
Assert.AreEqual(status, statusCode,
"Statuscode is not a " + status);
}
}
}
To run a Feature Test, right-click on it in the Test Explorer window and choose Run Selected Tests. This will execute the specified test and display the results in the console window.
Note: The Feature File could also be run by right-clicking on it and selecting Run SpecFlow Scenarios. However, it can occasionally cause problems.
Specflow Tables
Helpers for SpecFlow:
Tables in Specflow are very useful and can be used in a variety of ways. Tables are also useful for dealing with large amounts of data. They are quite powerful, but not the most user-friendly because you must deal with dictionary objects, plain class objects, and collections.
Tables are part of the SpecFlow Assist Helpers package.
We need to add the TechTalk.SpecFlow.Assist namespace to the top of your file
in order to use these helpers.
using TechTalk.SpecFlow.Assist;
Most people are confused by the Tables & Scenarios outline, but these two work in completely different ways.
The following are the differences
between Scenario Outline and Table
Scenario Outline:
- This uses the Example keyword to define the
test data for the Scenario
- This works for the entire test
- Cucumber runs the entire test as many times as the number of data points in the Test Set.
Tables:
- The test data is defined without the use of a keyword.
- This only works for the single step defined
below
- A separate code is required to understand the test data, and it can then be run once or multiple times, but only for the single step, not the entire test.
Comments
Post a Comment