Size: a a a

testing_in_python

2021 April 27

NR

Nikolay Romeiko in testing_in_python
не - просто 10 конфигов, по сути это набор данных в каком-то виде...дикт или лист
конекчусь и что-то делаю я уже потом на основании этих данных
источник

СС

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

NR

Nikolay Romeiko in testing_in_python
зараннее спасиб
источник

СС

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

СС

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

СС

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

СС

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

СС

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


в conftest.py


https://pastebin.com/6HvMQhCE
источник

СС

Сказочный Сникерс... in testing_in_python
омг, ща залью куда нить
источник

NR

Nikolay Romeiko in testing_in_python
по идее нет смысла ставить больше процессов в xdist, чем ядер на компе? 10 - условная цифра
просто хочу сэкономить время на конфигурации и иметь 10к заготовок под тесты, что бы при необходимости можно было одним запросом что-то поменять, а не слать 5+ запросов только на конфигурацию под тест
у меня есть опция делать независимый конфиг на каждый тест, но у меня уже есть проблема - 1 фича около часа прогон всех тестов и тестов становится все больше и я пока сделал их зависимыми, хочу от этого отойти
источник

СС

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

СС

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

СС

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

СС

Сказочный Сникерс... in testing_in_python
фикстура уже на стадии тестов не важно с xdist или без достанет этот объект и его можно юзать в тестах
источник

СС

Сказочный Сникерс... in testing_in_python
ВАЖНО понимать что сериализовать получится только простые структуры, классы, функции, строки, числа итд. Открыте файловые дескрипторы, открытые сокеты - не получится
источник

СС

Сказочный Сникерс... in testing_in_python
2 вариант немного проще, но смысл тот же. только тут фикстура сама выбирает свой конфиг в зависимости от того на каком процессе она запущена

https://pastebin.com/HtYAtR7N
источник

СС

Сказочный Сникерс... in testing_in_python
то есть 1 вариант - мы на мастере решаем что в какую ноду мы кладем. во 2 варианте каждая нода сама решает че ей взять
источник

А

Александр in testing_in_python
всем привет, вот такое сообщение при запуске файла тестов
PytestCollectionWarning: cannot collect test class 'TestBasket' because it has a init constructor (from: test/test_basket.py)
источник

А

Александр in testing_in_python
кто знает как исправить
источник

СС

Сказочный Сникерс... in testing_in_python
>
по идее нет смысла ставить больше процессов в xdist, чем ядер на компе? 10 - условная цифра

зависит от того что ты делаешь, нет проблем запускаться и в х2 больше процессов чем ядер, просто контекст свичей будет побольше
источник