Параллельный запуск suites (test class)


(Dmytro Makhno) #1

Разбираюсь с возможностями распараллеливания в Питоне.

(Надеюсь кому-то пригодится. Возможно вы видете устаревший гист, лучше на него “тыцнуть”)

Из коробки, очень нравится как делает nose. Где setUpClass вызывается для каждого тест сьюта один раз. Но, субъективно, интеграция py.test с xunit => jenkins, дает более понятное описание проблемы, если пошло что-то не так.

Может кто знает как достичь подобного распараллеливания с помощью py.test?
Готов попробовать другие варианты.

Note: Природа продукта такова, что сами тесты “легкие”, но подготовка класса очень трудоемкая задача. Нет возможности замокать подготовку или сделать in-memory. Некоторые тесты подымают 1-3 виртуальные машины в амазоне и это необходимость.

P.S. “А есть такое только без крыльев?.. Будем искать” ©


Один инстанс для всех процессов при параллельном запуске тестов (py.test xdist)
(Mykhailo Poliarush) #2

насколько я увидел из кода

то можно сделать это через hook а не через setupClass

посмотри вот эти хуки насколько они часто вызываются

def pytest_configure(config):
    if not hasattr(config, 'slaveinput'):
         pass
def pytest_sessionstart(session):
    pass

как будет время, выдам работающий код, пока что экспериментируй самостоятельно :smile:


(Mykhailo Poliarush) #3

@dmakhno ну что удалось решить проблему?


(Dmytro Makhno) #4

Миша,

Пока не добрался, пришлось переклються на другую задачу. Думаю вот на выходных разберусь. Заодно py.test по докам и сорцам детальнее пробегу.

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

https://bitbucket.org/hpk42/pytest/issue/175/way-to-control-how-pytest-xdist-runs-tests


(Mykhailo Poliarush) #5

и это самый правильный способ, можно конечно и свои костыли писать, но вернее убедить разработчика pytest в нужности функции и тогда он сделает в 100% правильнее

если бы там был лайк, я бы поставил :smile:


(Dmytro Makhno) #6

Votes :wink:


(Mykhailo Poliarush) #7

Точно! Я просто не был залогинен и голосовать нельзя было :smile:


(Mykhailo Poliarush) #8

Сделал небольшой костыль по этому поводу. Указан в другой теме