Есть ли способ перехватить вызовы поставщика данных и изменить их возвращаемые значения? - PullRequest
3 голосов
/ 10 июля 2019

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

Я прочитал документацию TestNG и javadoc, но, похоже, нет ничего похожего на IDataProviderListener. IMethodInterceptor может работать для тестов, для которых не установлены зависимости, но это будет неполное решение.

Я также знаю, что могут быть другие способы сократить время тестирования, но у меня есть ограниченные возможности, так как мой тестовый прибор является физическим, медленным и дорогим (поэтому распараллеливание недоступно.)

В качестве конкретного примера, скажем, у меня есть 3 теста: TestA, TestB, TestC и Test B и C используют уникальные провайдеры данных. Поставщик данных TestB обычно возвращает 5 наборов параметров, что приводит к 10 выполнению TestB. Аналогично для TestC, но поставщик данных обычно возвращает 1 набор параметров, что приводит к одному запуску TestC. Обычное исполнение будет:

  • TestA
  • TestB
  • TestB
  • TestB
  • TestB
  • TestB
  • TestC

Мне нужен способ получить следующее без изменения поставщика данных или источника тестового кода:

  • TestA
  • TestB
  • TestC

1 Ответ

1 голос
/ 12 июля 2019

В QAF, который является расширением для TestNG, реализован такой вариант использования вне TestNG путем предоставления перехватчика поставщика данных . Он также обеспечивает возможность фильтрации тестовых данных . Ниже приведен пример реализации QAFDataProviderIntercepter :

public class MyDataProviderIntercepter implements QAFDataProviderIntercepter{

 public void beforeFech(TestNGScenario scenario, ITestContext context){

 }
 public void List<Object[]> intercept(TestNGScenario scenario, ITestContext context, List<Object[]> testdata){

  //provide logic here
 }

}

Вам необходимо зарегистрировать этот класс как слушатель qaf.

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