Как указать pytest-xdist запускать тесты из одной папки последовательно, а остальные параллельно?
Представьте, что у меня есть test/unit/...
которые безопасно запускать параллельно и test/functional/...
которые пока нельзя запускать параллельно.
Есть ли простой способ убедить pytest запустить functional
последовательно? Учтите, что мы говорим о большом количестве тестов, поэтому изменение каждой функции / метода тестирования было бы очень шумным.
На данный момент мы запускаем тесты с фильтрами маркеров, поэтому в основном мы запускаем их раздельно. Тем не менее, я ищу решение для устранения необходимости запускать их по отдельности.
1 ответ
Вы можете реализовать свой собственный планировщик, который действует как load
или loadscope
, в зависимости от того, в каком модуле определен тест. Пример:
from xdist.scheduler.loadscope import LoadScopeScheduling
class MyScheduler(LoadScopeScheduling):
def _split_scope(self, nodeid):
if 'test/functional' in nodeid:
return 'functional-tests'
return nodeid
def pytest_xdist_make_scheduler(config, log):
return MyScheduler(config, log)
Все тесты под test/functional
будут сгруппированы под одним узлом functional-tests
(и, таким образом, выполняются одним и тем же воркером), остальные будут выполняться параллельно, как обычно.