Size: a a a

testing_in_python

2021 March 28

M

Merg in testing_in_python
Hoaa
browser (враппер вокруг драйвера) используют ui обьекты (login, main_page)
Долго думал, что бы тебе такое ответить, но ладно, раз хочется, то сделай так, конечно. В общем, убери свой синглтон, просто в ините создай экземпляр браузера и засетапь как надо. И ты же понимаешь, что браузер будет общим для всех тестов в одном файле? Глобальные переменные выстрелят тебе в ногу не сейчас так позже.
Пока не поздно сделай как все, в фикстуре. Можно же в фикстуре передавать пейджу и не инициализировать ее в тесте.
источник

EB

Evgenii B in testing_in_python
Hoaa
Подскажите, есть задача, не могу решить. Пробую написать простенький враппер вокруг вебдрайвера. Застрял на грамотном вызове. Проблема в том чтобы в рамках каждого теста использовался отдельный инстанс драйвера. Пробовал как синглтон оформить, но тогда получается что следующий тест использует инстанс предыдущего (в одном окне браузера). Понимаю что проблема тривиальная, скорее всего, но как этот момент можно обыграть я дойти не могу, уже запутался окончательно.
давай уточним, я не понял твоих формулировок.

Что ты хочешь получить, и что имеешь. "Проблема в том чтобы в рамках каждого теста использовался отдельный инстанс драйвера" — это "я хочу запускать тесты в одном браузере, не убивая его каждый раз" или "я хочу открывать и закрывать браузер перед каждым тестом"
источник

M

Merg in testing_in_python
А, ну и тебе надо как-то шарить браузер между пейджами, они же не будут все в одном файле
источник

EB

Evgenii B in testing_in_python
Evgenii B
давай уточним, я не понял твоих формулировок.

Что ты хочешь получить, и что имеешь. "Проблема в том чтобы в рамках каждого теста использовался отдельный инстанс драйвера" — это "я хочу запускать тесты в одном браузере, не убивая его каждый раз" или "я хочу открывать и закрывать браузер перед каждым тестом"
следующий вопрос, это как только вы выяснили порядок запуска драйвера, можно положить его в соответствующий скоуп фикстуры.
источник

EB

Evgenii B in testing_in_python
не понял вообще че мерг там писал про глобальные переменные
источник

EB

Evgenii B in testing_in_python
и про файлы, что, лол
источник

СС

Сказочный Сникерс... in testing_in_python
class BasePage

  def __init__(self, driver):
         self.driver = driver
источник

СС

Сказочный Сникерс... in testing_in_python
class MainPage(BasePage):
источник

СС

Сказочный Сникерс... in testing_in_python
@pytest.fixture(scope='function')
def driver():
   get driver
   yield driver
   driver.quit()
источник

СС

Сказочный Сникерс... in testing_in_python
что еще надо то?)
источник

EB

Evgenii B in testing_in_python
ну да. и оно отлично параллелится
источник

M

Merg in testing_in_python
Evgenii B
не понял вообще че мерг там писал про глобальные переменные
так ты код его видел? он хочет импортировать main_page в тестовом модуле и юзать, без инициализации в тестах
источник

M

Merg in testing_in_python
типа, page = Page(driver) в тестах - отстой)
источник

H

Hoaa in testing_in_python
Сказочный Сникерс
что еще надо то?)
И сетап к тестам будет выглядть примерно так? Т.е. в каждую пейджу мы передаём этот драйвер?
источник

H

Hoaa in testing_in_python
Merg
так ты код его видел? он хочет импортировать main_page в тестовом модуле и юзать, без инициализации в тестах
Для наглядности написал весь код на скрине.
источник

P

Polina in testing_in_python
Hoaa
И сетап к тестам будет выглядть примерно так? Т.е. в каждую пейджу мы передаём этот драйвер?
Вам в каждом тесте нужен каждый пейдж?
источник

H

Hoaa in testing_in_python
Polina
Вам в каждом тесте нужен каждый пейдж?
Допустим, да.
источник

СС

Сказочный Сникерс... in testing_in_python
Hoaa
Допустим, да.
тогда можно так, да
источник

СС

Сказочный Сникерс... in testing_in_python
можно чейнить пейджы
источник

СС

Сказочный Сникерс... in testing_in_python
условно login page порождает employees page при логине. последняя при вызове метода go_to_user_actions возвращает user action page итд, вариантов масса
источник