Библиотека с инструментом для поиска утечек памяти в процессе выполнения тестов в Chrome или Node.js
pip install sealant
Минимальный набор действий для подключения библиотеки:
from sealant import sealant
from unittest import TestCase
...
# Предназначено для использование с фреймворком UnitTests и основанных на
# нем сторонних фреймворках
class TestsCaseExample(TestCase):
...
# Перед тестом необходимо уже иметь запущенную ноду, библиотека
# подключается к ней перед запуском метода test_case
@sealant()
def test_case(self):
some_actions()
В представленном выше сценарии используются настройки подключения по умолчанию:
подключение к ноде по localhost:9222
При необходимости можно указать другие хост/порт ноды или прямую
ccылку websocket
@sealant(host='not_localhost', port='2229', ws='ws://direct_ws:9222')
def test_case(self):
actions()
Указанный ws имеет приоритет над host/port
Допустим вариант указания настроек подключения для целого класса:
@sealant(host='not_localhost', port='2229')
class TestsCaseExample(TestCase):
...
@sealant()
def test_case(self):
actions()
Можно задать настройки по умолчанию для всех использований библиотеки в config.py.
Следующим важным этапом настройки является возможность выбора типа heapfile: heaptimeline или heapsnapshot. По умолчанию используется heaptimeline как более быстрый и показавший большую стабильность способ. Но для Node.js допустим только вариант с heapsnapshot:
@sealant(timeline=False)
def test_case(self):
actions()
Найденные утечки сравниваются с объемом, указанным в config.py (leak_size_limit). Если размер утечки больше заданного допустимого после выполнения 8 пункта, то вызывается исключение LeakError.
В config.py можно задать, сохранять ли полученные heapfiles и составлять ли отчет в случае нахождения утечки. В этом случае составленный отчет и снятые heapfiles пакуются в zip архив и помещаются в заданную в config.py папку (по умолчанию создается папка leaks в папке с тестом).
Мы используем SemVer для версионирования.
Юдахин А.Е
e-mail: aejudakhin@gmail.com
Докучаев С.В
e-mail: sv.dokuchaev@tensor.ru
This project is licensed under the MIT License - see the LICENSE.md file for details