Руководство по тестированию ноутбуков Jupyter.

Блокноты Jupyter — отличный инструмент для исследовательской работы в области науки и техники, но они, как известно, хрупки. От порядка выполнения ячеек зависит очень многое, сломать блокнот совсем несложно. Поверьте мне, это случалось со мной много раз. Поэтому настоятельно рекомендуется использовать автоматизированные тесты для ваших важных ноутбуков, как и для любого программного обеспечения.

В основном есть три сценария, которые вы обычно хотите рассмотреть:

  • тестирование значений переменных в вашем блокноте
  • тестирование функций или классов, определенных в вашей записной книжке
  • проверка того, что весь блокнот работает без ошибок

Вам просто нужно установить пакет ipynb, который позволяет импортировать записные книжки в обычные файлы Python, и вы готовы к работе:

pip install ipynb

Пример блокнота

В качестве примера мы протестируем следующий простой блокнот Jupyter qm_harmonic.ipynb, который решает стационарное уравнение Шредингера квантового гармонического осциллятора.

Тестирование ноутбука Jupyter

Вот как вы можете протестировать все три упомянутых выше сценария. Сначала вы импортируете записную книжку методом setUpClass. Это загружает (и выполняет) блокнот и делает его доступным для всех тестов в классе. Обратите внимание, что при вызове функции import_module вы присоединяете имя файла блокнота Jupyter к строке "ipynb.fs.full.”. После загрузки вы можете получить доступ ко всем переменным и функциям из своего кода. Вот реализация с unittest framework:

Первая тестовая функция проверяет переменную energies, определенную в блокноте, и утверждает, что она имеет соответствующее значение для энергии основного состояния квантового гармонического осциллятора.

Вторая тестовая функция использует функцию kinetic, определенную в записной книжке, поэтому вы можете использовать все инструменты тестирования Python, которые вы используете при обычном тестировании Python.

И, наконец, нет реальной необходимости подробно описывать третий упомянутый сценарий, потому что он уже охвачен и другими сценариями. Если загрузка (и выполнение) записной книжки в методе setUpClass не удалась (из-за исключения, выполняющего записную книжку), все связанные тесты завершатся автоматически.

Заключение

Тестирование имеет решающее значение для качества программного обеспечения, особенно для чего-то столь хрупкого, как ноутбук Jupyter. Тем не менее, многие пользователи Jupyter пренебрегают этим. Но это можно и нужно сделать. С помощью шагов, описанных выше, должно быть легко повысить надежность ваших важных записных книжек.

Спасибо за прочтение!

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.