Использование Docker с Selenium и Pytest для запуска параллельных тестов

Я пытаюсь использовать все это вместе для запуска параллельных тестов в безголовом Chrome:

Докер, Селен, Pytest

Однако мне интересно, где имеет смысл запускать параллельную часть системы?

Docker может это сделать (используя сетку селена). Оба они могут использоваться для запуска параллельных (и распределенных) тестов на селен. например

https://github.com/elgalu/docker-selenium

https://github.com/zalando/zalenium

Также в Pytest есть собственный способ запуска параллельных тестов (с использованием pytest-xdist), например.

http://pytest.org/dev/xdist.html

Будет ли проще запустить 10 параллельных pytest-xdist, чем 10 контейнеров-докеров?

Буду признателен, если узнаю достоинства / недостатки каждого из них.

Кроме того, есть идеи, как использовать эти вещи вместе? Информация об этом кажется действительно скудной.


person Ke.    schedule 23.03.2017    source источник


Ответы (2)


Вы создаете столько, сколько вам нужно / хотите, контейнеров, тогда вы сообщите xdist IP-адреса контейнеров, и если вам нужны тесты пользовательского интерфейса, тогда pytest имеет pytest-splinter, и если вам нужны сценарии bdd, вы можете использовать pytest-bdd.

person Andrey Makhnach    schedule 10.05.2017

Однако мне интересно, где имеет смысл запускать параллельную часть системы?

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

Будет ли проще запустить 10 параллельных pytest-xdist, чем 10 контейнеров-докеров?

Pytest распараллеливает выполнение теста за вас, но не создание экземпляров и оркестровку для доступных браузеров.

Резюме:

Проблема: вам нужно запускать тесты UI (Selenium) параллельно. Для выполнения этого теста вам понадобится N доступных браузеров.

Решение: вы можете запустить N узлов безголового хрома из докера. Проблема: у вас есть 10 различных вариантов подключения, которые вы можете указать своим драйверам в ваших тестах.

Решение. Запустите Selenium Hub и позвольте ему управлять этим за вас. Таким образом, вам нужно иметь дело только с одной точкой подключения, и тогда вам будет предоставлен браузер, который может бесплатно запустить этот тест.

Проблема: вы сейчас запускаете тесты, и используется только один браузер. Решение. Используйте xdist, чтобы указать pytest выполнять X тестов за раз. X в этом случае может соответствовать N количеству доступных браузеров.

person lucrib    schedule 11.12.2019