Я использую py.test (версия 2.4, в Windows 7) с помощью xdist для запуска ряда числовых тестов регрессии и интерфейса для библиотеки C++, которая предоставляет интерфейс Python через модуль С.Py.test: чрезмерное использование памяти с большим количеством тестов
С течением времени количество тестов выросло до ~ 2000, но теперь мы сталкиваемся с некоторыми проблемами памяти. Является ли использование xdist или нет, использование памяти для процесса python, выполняющего тесты, кажется, постоянно увеличивается.
В режиме одиночного процесса мы даже видели несколько проблем с плохими ошибками размещения, тогда как при использовании общей памяти xdist может привести к снижению ОС (8 процессов, каждая из которых использует> 1 ГБ к концу).
Ожидается ли такое поведение? Или кто-то другой испытывает ту же проблему при использовании py.test для большого количества тестов? Есть ли что-то, что я могу сделать в tearDown (класс), чтобы уменьшить использование памяти с течением времени?
На данный момент я не могу исключить возможность проблемы, лежащей где-то внутри кода C/C++, но при запуске какой-то долговременной программы, использующей этот код через интерфейс Python вне py.test, я вижу относительно постоянную использование памяти во времени. Я также не вижу чрезмерного использования памяти при использовании носа вместо py.test (мы используем py.test, так как нам нужны отчеты junit-xml для работы с несколькими процессами)
Есть ли состояние/данные, хранящиеся на любом экземпляре тестового класса/случая? Не могли бы вы попытаться найти небольшой пример, который использует «растущее» поведение памяти? – hpk42
Проблема заключалась в том, что данные хранились на тестовых классах в методах setUpClass. Использование нескольких операторов self.x = None в методе tearDownClass решило проблему. Спасибо, что указали мне в правильном направлении. – tt293
В py.test также есть проблема, которая способствует этому: https://github.com/pytest-dev/pytest/issues/1649 – dbn