Несколько лайфхаков по дебагу flaky тестов. В примерах будет pytest, но это может быть вообще любая команда.
- Запускаем тест с ограничением на доступное CPU:
sudo -E env PATH=$PATH systemd-run -p CPUQuota="10%" --scope --uid=$USER --gid=$USER -- pytest -x tests/test_something.py
Мы тут пробовали для ограничения ресурсов UNIX-овые stress
и cpulimit
, но они делают не то, что нужно. Смотрели на Docker, но в него больно окружение пробрасывать. А вот systemd
справился на удивление хорошо.
- Запускаем тест, пока не упадёт:
while pytest -x -v --pdb tests/test_something.py ; do :; done
Тут сразу с дебаггером (--pdb
), потому что обычно так хочется не только воспроизвести падение теста, но и посмотреть, что же там внутри идёт не так.