Огурец / огурец - Как сделать ссылку из ячейки в наборе данных на строку в другом наборе данных - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу использовать Cucumber для тестирования моего REST API.Поэтому я хотел бы заполнить базу данных несколькими тестовыми данными и отправить запрос GET в шаге «Когда».Было бы здорово, если бы я мог объяснить состояние базы данных по шагам.Так можно ли сослаться из ячейки в таблице данных на строку в другой?Примерно так:

Given the system knows of the following products
  | productId   | productName   | productCategory |
  | 1           | Kaffee        | {{HotDrinks}}   |
  | 2           | Espresso      | {{HotDrink}}    |
  | 3           | Hot Chocolate | {{KidsDrinks}}  |
And the system knows about the following productCategories
  |                 | productCategoryId | productCategoryName  | customizations  |
  | {{HotDrinks}}   | 1                 | HotDrinks            | "milk", "shots" |
  | {{KidsDrinks}}  | 2                 | KidsDrinks           | "cream"         |
And the system knows about the following customizations
  |               | customizationId | customizationName | kinds             |
  | {{milk}}      | 1               | milk              | skim, semi, whole |
  | {{shots}}     | 2               | shots             | single, double    |
  | {{cream}}     | 3               | cream             | true              |
When a client requests GET /productCatalogue
Then the HTTP response status will be 200
And the response body contains the following JSON
"""
...
"""

Есть ли способ сделать что-то подобное?

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете использовать NoraUi (NoraUi, для NOn-Regression Automation для пользовательских интерфейсов, - это инфраструктура Java, основанная на стеке Selenium, Cucumber и Gherkin, для создания проектов тестирования GUI, которые могут быть включены в непрерывную интеграциюцепочка сборок веб-решений для одного / нескольких приложений.)

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

And I save the value of REST API 'GET' 'GITHUBAPI_HOME' '/search/users?q=location:rennes+language:java&page=1&per_page=10' in 'title' context key.

Этот шаг соответствует этому Java-коду (полный код здесь ):

@And("I save the value of REST API '(.*)' '(.*)' '(.*)' in '(.*)' context key[\\.|\\?]")
public void saveValue(String method, String pageKey, String uri, String targetKey, List<GherkinStepCondition> conditions) throws TechnicalException, FailureException {
    ...
    try {
        json = httpService.get(Context.getUrlByPagekey(pageKey), uri);
    } catch (HttpServiceException e) {
        ...
    }
    ...
}

Код HttpService здесь .Эту услугу используют okhttp3.OkHttpClient

...