Size: a a a

testing_in_python

2021 July 19

VQ

Vladislav Q in testing_in_python
Если я правильно понял о чём идёт речь, то вроде как может помочь lazy_fixture
import pytest
from pytest_lazyfixture import lazy_fixture


@pytest.fixture(params=['a', 'b', 'c'])
def one():
   print('one')
   return 1


@pytest.fixture(params=['z', 'y'])
def two():
   print('two')
   return 2


@pytest.fixture(params=[lazy_fixture('one'), lazy_fixture('two')])
def common_fixture(request):
   return request.param


def test(common_fixture):
   print(common_fixture)

lazy_fixture/test_5pytest_lazy_fixture_with_params.py::test[one-a] one
1
PASSED
lazy_fixture/test_5pytest_lazy_fixture_with_params.py::test[one-b] one
1
PASSED
lazy_fixture/test_5pytest_lazy_fixture_with_params.py::test[one-c] one
1
PASSED
lazy_fixture/test_5pytest_lazy_fixture_with_params.py::test[two-z] two
2
PASSED
lazy_fixture/test_5pytest_lazy_fixture_with_params.py::test[two-y] two
2
PASSED


https://github.com/TvoroG/pytest-lazy-fixture/blob/master/tests/test_lazyfixture.py - тут наверняка найдётся подходящий пример
источник

Pavel Павлик in testing_in_python
Выглядит прямо как то, что нужно
источник

VQ

Vladislav Q in testing_in_python
самый быстрый вариант уже выше кидали, у меня была похожая таска, но я там просто сделал фикстуру, которая возвращала нужные наборы :peka:
@pytest.fixture(
   params=[
       {'session': session_1()['session'], 'result': True},
       {'session': session_2()['session'], 'result': False}
   ],
   ids=['True', 'False']
)
def some_fixture(request):
   data = {'session': request.param['session'], 'result': request.param['result']}
   return data


def test_some(some_fixture):
   response = blabla()
   assert response == some_fixture['result']
источник

Pavel Павлик in testing_in_python
Выгялдит, как что-то совсем другое
источник

VQ

Vladislav Q in testing_in_python
)) Ну тогда первый вариант, раз похоже на правду 👍
источник

В

Виталий in testing_in_python
Привет. Коллеги, подскажите пожалуйста, кто работал с Selenoid. Как я могу запустить одновременно примерно 200-300 браузеров?
источник

СС

Сказочный Сникерс... in testing_in_python
moon 🌚
источник

В

Виталий in testing_in_python
он платный?
источник

АБ

Александр Бушманов... in testing_in_python
Так же как и 1, только 200
источник

СС

Сказочный Сникерс... in testing_in_python
тогда ggr надо внедрять, то есть чтобы один селеноид менеджил несколько селеноид хостов
источник

В

Виталий in testing_in_python
А он платный? Что-то в доке такое написано
источник

IB

Igor Balagurov in testing_in_python
под такое потребуется железа по 1,5-2 ядра и по гигу оперативки на каждый браузер железа (очень примерно, зависит от приложения)

а как дальше это делать выбор следующий: несколько тачек и ggr + seleniod'ы, moon, который тоже железа потребует, или их же SaaS по типу sauce labs. ещё какой-то вариант есть разворачивать не на своём железе, а в облаке, и им сверху доплачивать ещё, но там прайсинг вроде норм.
источник

IB

Igor Balagurov in testing_in_python
всё есть на сайте, почитай.
или к ним чат =)
источник

IB

Igor Balagurov in testing_in_python
но они на сайт тоже отправят)
источник

В

Виталий in testing_in_python
а если просто попробовать создать несколько контейнеров и в каждом запускать по 4 браузера?)
источник

В

Виталий in testing_in_python
Нужно бесплатно как-то)
источник

АК

Александр Кот... in testing_in_python
В кубах поднимаете на каждый ран свой контейнер с браузером, так и достигаете 200-300 ранов.
источник

В

Виталий in testing_in_python
т.е я создаю докер контейнер с своим тестом и браузером. Дальше я его маштабирую с помощью кубернетис?
источник

СС

Сказочный Сникерс... in testing_in_python
у тебя столько железа есть?
источник

СС

Сказочный Сникерс... in testing_in_python
такое ощущение что ты пытаешься нагрузочное тестирование сделать селениумом)
источник