Перейти к содержимому

Фотография

TestNG Мултибраузерность


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 VladAlyukov

VladAlyukov

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 07 марта 2012 - 21:16

Господа, многие из Вас сталкивались с автоматизацией тестирования с помощью selenium, многие из вас запускали одни и те же тесты в разных браузерах.
О том как запускать тесты в разных браузерах сейчас и пойдёт речь.

Неглубоко копнув в testng я увидел 2 способа конфигурации разных экземпляров браузеров для одного теста:

1. Группируем тестовые сценарии в конфиге (по группам/классам/пакеджам) передаём сгруппированному сюиту параметр "имя браузера", далее в @Before[Class|Test|Method] конфигуриреум remotewebdriver и передаём это в тестовый метод
2. Создаём с помощью метода @Fabric фабрику тестовык классов которой передаём список браузеров, в итоге она создаёт необходимое кол-во экземпляров тестовых классов в которые мы через конструктор передаём remotewebdriver

Оба методы имеют свою плюсы и минусы, но минусов в обоих для меня подавляющие большинство. В пером мы имеем избыточную конфигурацию, во втором пропавшую возможность использовать dataProvider.
В связи с этим возникает следующий вопрос: Как это реализовать наиболее правильно?
  • 0

#2 neman

neman

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Антон


Отправлено 08 марта 2012 - 07:56

Последний вопрос, насчет наиболее правильной реализации, тоже очень интересует.
Могу предложить третий вариант - сделать не фабрику тестовых классов, а фабрику драйверов. Насколько я понял задачу, необходимо для каждого класса вызывать свой инстанс веб-драйвера. В таком случае, можно формировать и хранить контейнер вида <Имя класса> - <Инстанс драйвера>. Соответственно, в тестах переделать обращения к драйверу на вызов фабрики, который вернет драйвер нужной конфигурации именно для теста, откуда он был вызван. Инициализировать и заполнять контейнер драверов для тестов с фиксированными конфигурациями можно заранее, где нибудь в @BeforeSuite, для особых тестов можно передавать в них параметры и добавлять в контейнер запись при первом вызове.
Надеюсь не слишком сумбурно изложил :). Может у кого-то найдется вариант получше.
  • 0

#3 VladAlyukov

VladAlyukov

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 08 марта 2012 - 12:12

Последний вопрос, насчет наиболее правильной реализации, тоже очень интересует.
Могу предложить третий вариант - сделать не фабрику тестовых классов, а фабрику драйверов. Насколько я понял задачу, необходимо для каждого класса вызывать свой инстанс веб-драйвера. В таком случае, можно формировать и хранить контейнер вида <Имя класса> - <Инстанс драйвера>. Соответственно, в тестах переделать обращения к драйверу на вызов фабрики, который вернет драйвер нужной конфигурации именно для теста, откуда он был вызван. Инициализировать и заполнять контейнер драверов для тестов с фиксированными конфигурациями можно заранее, где нибудь в @BeforeSuite, для особых тестов можно передавать в них параметры и добавлять в контейнер запись при первом вызове.
Надеюсь не слишком сумбурно изложил :). Может у кого-то найдется вариант получше.


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

Вопрос ведь ещё стоит не только в том как запускать тестовые методы с разными драйверами, а в том как это сделать так что бы ключевой функционал testng (отчётность, датапровайдеры, фабрики) оставался доступным.

Глядя на твой вариант вспомнил его модификацию стандратными средствами testng вместо фабрики, сделать общий dataprovider в котором конфигурировать набор драйверов и передавать его в метод. но это опять приведёт к тому что мы потеряем функционал dataprovider.

В общем я думаю пока на тему написать свой тестранер в котором формировать suite на основе моих правил, что судя по всему хорошенький такой костыль 8)
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных