Size: a a a

testing_in_python

2021 July 20

С

Сергей in testing_in_python
Видимо вот этим методом
источник

СС

Сказочный Сникерс... in testing_in_python
Нормально - никак. Это костыли
источник

СС

Сказочный Сникерс... in testing_in_python
Фикстуры защищены от прямого вызова. Если у тебя есть metafunc - значит ты в хуке, а хуки это совсем другой уровень нежели фикстуры
источник

Pavel Павлик in testing_in_python
Мне не нужен вызов, мне сама функция фикстуры нужна.

Сейчас, когда я это написал, понял, что нужно смотреть в сторону pytest.mark
источник

СС

Сказочный Сникерс... in testing_in_python
не понял, а зачем тебе функция?
источник

СС

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

Pavel Павлик in testing_in_python
Я все еще решаю свою проблему с фикстурами.

Мне нужно было по особому комбинировать пару значений фикстур: фабрики и входных данных.
Я решил делать через pytest_generate_test как ты и советовал.
Я помечаю каждую фикстуру декоратором, добавляя предикат, который фильтрует нужные фабрики/входные данные. Декоратор заменяет пустую функцию на функцию, которая рейзит исключительнение. Самое главное -- декоратор добавляет в словарь, где ключ -- имя функции (фикстуры), а значение -- предикат.

В итоге pytest_generate_test параметризует фикстуры нужным образом.

Вот тут я бы хотел вместо глобального словаря добавлять информацию о предикат сразу в фикстуру или функцию и как-то её доставать
источник

СС

Сказочный Сникерс... in testing_in_python
посмотри исходники lazy_fixture
https://github.com/TvoroG/pytest-lazy-fixture/blob/master/pytest_lazyfixture.py

по твоему описанию там делается как раз примерно то же самое
источник

СС

Сказочный Сникерс... in testing_in_python
тебе явно нужно допилить pytest_fixture_setup
+ через funcmanage каким то образом достать callspec фикстур и изменить его
источник

СС

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

СС

Сказочный Сникерс... in testing_in_python
но саму функцию фикстуры достать можно как я тебе показал выше

metafunc._arg2fixturedefs['<fixturename>'][0].func
источник

S

Someone in testing_in_python
Привет. Прошу сильно не ругать, я птичка, мне, пока, такое сложно)
Разбираюсь с Selenium Grid. Не могу понять, как запустить тесты паралельно на нескольких браузерах одновременно?
Везде в примерах просто пишут driver = Remote ( драйвер с конкретным браузером в desiredcaps). Тоесть тесты запустятся удаленно но только для указанного браузера...

Возможно надо создать типа фабрику для драйвера и добавить параметр - название браузера в addopts. И потом ранить отдельно джобы под каждый браузер? Так ок или не ок? Как правильно такое сделать?
источник

S

Someone in testing_in_python
Ноды поднимаю через docker-compose
источник

СС

Сказочный Сникерс... in testing_in_python
самый простой вариант - сделать так чтобы нужные тесты параметризовывались типом браузера. и чтобы этот тип в том числе летел в Remote
источник

СС

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

СС

Сказочный Сникерс... in testing_in_python
стоит ее только заюзать - тест автоматически прогонится на обоих
источник

СС

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

Pavel Павлик in testing_in_python
А зачем его изменять?
источник

S

Someone in testing_in_python
Думал как вариант, но если таких тестов много, их все параметризировать? :/
источник

S

Someone in testing_in_python
Спасибо, посмотрю
источник