Таблица в качестве входных данных в файле объектов - PullRequest
0 голосов
/ 29 августа 2018

Пока я работал над cucumber тестами со схемой сценария и записью файла объектов, в настоящее время у меня есть 25 аргументов в таблице примеров, и я представляю их, как я видел здесь:

Scenario Outline: Create ABC
Given I open the application
When I enter username as "<username>"
And I enter password as "<password>"
Then I enter title as "<title>"
And press submit
Examples:

| username | password | title |

| Rob      | xyz1      | title1 |

| Bob      | xyz1      | title2 |

только у меня есть как я сказал 25 аргументов. Есть ли возможность передать всю таблицу примеров как datatable, а не как 25 аргументов в файле шага?

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Имея этот файл функций, вы должны иметь следующие аннотации в ваших определениях шагов, чтобы перенести все данные в примере таблицы в файл определения шагов.

@Given("^I open the application$")
@When("^I enter username as \"([^\"]*)\"$")
@When("^I enter password as  \"([^\"]*)\"$")
@Then("^I enter title as \"([^\"]*)\"$")
@Then("^press submit$")

Файл определений шагов

package steps;

import cucumber.api.PendingException;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class StepDefs {
    @Given("^I open the application$")
    public void i_open_the_application() throws Throwable {
        System.out.println("=============================================================");
        System.out.println(" Opening the Application ... ");
    }

    @When("^I enter username as \"([^\"]*)\"$")
    public void i_enter_username_as_username(String username) throws Throwable {
        System.out.println(" Username: " + username);
    }

    @When("^I enter password as  \"([^\"]*)\"$")
    public void i_enter_password_as_password(String password) throws Throwable {
        System.out.println(" Password: " + password);
    }

    @Then("^I enter title as \"([^\"]*)\"$")
    public void i_enter_title_as_title(String title) throws Throwable {
        System.out.println(" Title: " + title);
    }

    @Then("^press submit$")
    public void press_submit() throws Throwable {
        System.out.println(" SUBMIT");
        System.out.println("=============================================================");
    }

}

Я протестировал его, и он работает нормально, как и ожидалось, используя вашу таблицу данных.
Но я мог бы порекомендовать вместо использования таблиц данных огурцов вы можете вставить тестовые данные в файл Excel и прочитать их, используя Apache POI Library

0 голосов
/ 07 сентября 2018

Вы можете достичь этого, используя qaf-gherkin , где вы можете загрузить примеры из внешнего источника данных, такого как csv / excel / xml / json / database. В этом случае ваш файл будет выглядеть так:

Scenario Outline: Create ABC
Given I open the application
When I enter username as "<username>"
And I enter password as "<password>"
Then I enter title as "<title>"
And press submit
Examples:{'datafile':'resources/testdata.txt'}

И ваш файл данных будет выглядеть так:

#col.separator=|
username|password|title
Rob|xyz1|title1
Bob| xyz1|title2

Выше приведен пример поставщика данных csv (значения, разделенные чартером) с | в качестве сепаратора. Вы также можете использовать разных поставщиков данных для предоставления данных из любой базы данных excel / xml / json /.

0 голосов
/ 29 августа 2018

25 аргументов звучат как много, чтобы поместить в файл функции. Вот возможные пути:

  1. помещает только идентификатор каждой строки в таблице примера. Чтобы он повторял одну строку на строку, и в вашем сценарии вы извлекаете данные из внешнего источника с этим идентификатором.

  2. преобразовать каждую строку в JSON, чтобы вы могли иметь только один столбец данных в таблице примера, или просто преобразовать некоторые данные в JSON и оставить базовые данные такими, как в таблице примера.

  3. отредактируйте данные во внешнем инструменте и импортируйте их в свой файл объектов. Некоторые инструменты, такие как CukeTest , поддерживают импорт данных из файла CSV в пример, как показано ниже:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...