Всем привет. В предыдущей статье мы говорили о создании фича-файла. Сейчас мы рассмотрим его реализацию, но сперва расскажу, какими бывают пути написания тестовых сценариев в SpecFlow. Все их можно разделить на 3 группы:
Обычное Data Driven тестирование
- Захардкодженные входные данные – без использования параметризации и ключевого слова Example (рассмотрим его далее в этой статье)
Data Driven тестирование с использованием явной параметризации
- Параметризация с использованием ключевого слова Examples и таблиц
Data Driven тестирование с использованием внешних файлов
- Параметризация с использованием Excel файлов
- Параметризация с использованием Json
- Параметризация с использованием XML
Таблицы Examples содержат наборы данных, которые позволяют запустить один и тот же сценарий несколько раз, подставляя в него разные наборы данных (параметры).
Data Driven тестирование в SpecFlow
Попробуем реализовать написанный сценарий входа на сайт.
Проект на данный момент должен выглядеть приблизительно так:

Обратите внимание: Два файла (SpecFlowFeature1.feature и SpecFlowFeature1Steps.cs) были удалены так как они рассматривались в целях ознакомления.
Напомню, что наш LogIn_Feature.feature файл выглядит так:
|
1 2 3 4 5 6 7 8 9 10 11 |
Feature: LogIn_Feature In order to access my account As a user of the website I want to log into the website @mytag Scenario: Successful Login with Valid Credentials Given User is at the Login Page When User enter UserName and Password And Click on the LogIn button Then Successful LogIN message should display |
Тогда класс реализации LogIn_Steps.cs сценария будет иметь вид:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
using OpenQA.Selenium; using OpenQA.Selenium.Firefox; using System; using TechTalk.SpecFlow; namespace SpecFlowDemo { [Binding] public class LogIn_FeatureSteps { public IWebDriver driver; [Given(@"User is at the Login Page")] public void GivenUserIsAtTheHomePage() { driver = new FirefoxDriver(); driver.Url = "http://autoqa.pp.ua/wp-admin"; } [When(@"User enter UserName and Password")] public void WhenUserEnterUserNameAndPassword() { driver.FindElement(By.Id("user_login")).SendKeys("subscriber"); driver.FindElement(By.Id("user_pass")).SendKeys("2016subscriberpasssword2016ok"); } [When(@"Click on the LogIn button")] public void WhenClickOnTheLogInButton() { driver.FindElement(By.Id("wp-submit")).Click(); } [Then(@"Successful LogIN message should display")] public void ThenSuccessfulLogINMessageShouldDisplay() { if (driver.FindElement(By.Id("profile-page")).Displayed) { // Print a Log In message to the screen Console.WriteLine("Login successfully."); } // Close the driver driver.Close(); } } } |
Параметризация без использования ключевого слова Examples
Для этого нам придется захардкодить UserName и Password, а именно:
1) Перейти в Feature-файл и изменить Username и Password как показано ниже:
When User enter ‘subscriber′ and ‘subscriberpassword′
Для этого выражения мы подставляем Username и Password с фича-файла, которые автоматически подтягиваются со Step Definition. В этот момент сценарий с нереализованным одним степом будет подсвечен:

2) Теперь реализуем этот степ. Для этого вставьте курсор в эту строку и нажмите F-12. Должно открыться окно с реализацией метода-шаблона.

Нажмите Yes для его генерации.
3) Теперь стоит скопировать код с предыдущего метода без параметров:
|
1 2 |
driver.FindElement(By.Id("user_login")).SendKeys("username"); driver.FindElement(By.Id("user_pass")).SendKeys("password"); |

4) На последнем шаге нам понадобится подставить значения переменных для параметров:

5) Теперь нам остается выполнить тест в Test Explorer.

На этом все. В следующей статье напишу о том, как делать параметризацию с использованием ключевого слова Example.
Подписывайтесь на рассылку и всем бобра! ![]()