Что - подробные инструкции

  1. Мой тест вызывает сторонний API и отправляет запрос на новую транзакцию (скажем, мне нужно сделать это для 5 тестов, сгенерированных @Factory). Здесь эти тесты заканчиваются статусом «Ожидание».

  2. Стороннему API требуется 5 минут для обработки данных. Мне нужно сделать второй вызов API через 5 минут (для всех моих ожидающих тестов), чтобы получить идентификатор транзакции для моего запроса, а затем пройти / не пройти тест.

  3. Я хочу развернуть здесь еще один @Factory, чтобы повторно сгенерировать все ожидающие тесты. Эти ожидающие тесты снова вызывают API (с другими входными данными), чтобы получить идентификатор транзакции и пройти / не пройти тест на основе этой информации.

Как

Я пытаюсь использовать @Factory для динамического создания кучи тестов и их запуска. После запуска этих тестов я хочу снова использовать @Factory для создания второй партии новых тестов и их запуска. Проблема в том, что мне не удалось позвонить @Factory во второй раз.

Я использую Jenkins и Maven в своей настройке для создания сборок, и именно тогда я хочу, чтобы тесты запускались.

Вопросы

Возможен ли шаг 3?

Есть лучший способ сделать это?

Спасибо всем!

0
Nash N 27 Окт 2015 в 07:33

2 ответа

Лучший ответ

Решено! Ответы на этот вопрос привели меня к поиску ответа - Спасибо @Verhagen

  1. Я добавил 2 теста в свой testng.xml.
  2. И в моем коде есть 2 фабрики.
  3. Когда запускается сборка,

    @Factory 1 creates tests --> 
    @Factory 2 creates more tests --> 
    tests by @Factory 1 are executed --> 
    tests by @Factory 2 are executed
    

Это решает мою потребность в запуске пакета тестов (первый пакет), а затем запуска второго пакета тестов на основе результатов первого пакета.

0
Nash N 29 Дек 2015 в 16:46

Чтение дополнительного комментария / уточняющего вопроса действительно похоже на интеграционный тест .

Есть несколько необходимых библиотек Integration Test , например JBehave, Serenity, Огурец и т. д., что, вероятно, лучше для настройки.

С TestNG вы можете создать 3 теста, где каждый следующий тест зависит от предыдущего. См. Пример кода ниже из testng dependency test

package com.mkyong.testng.examples.dependency;

import org.testng.annotations.Test;

public class App {

    @Test
    public void method1() {
        System.out.println("This is method 1");
    }

    @Test(dependsOnMethods = { "method1" })
    public void method2() {
        System.out.println("This is method 2");
    }

}

Здесь показана самая простая зависимость. См. Пример кода для более сложных случаев, таких как группы и т. Д. Для настройки двух тестовых классов, каждый со своим собственным @Factory

0
Verhagen 27 Окт 2015 в 14:50