Автотесты калькуляторов: эталон на Python и прогон в Chromium
Как устроены test_calc.py и test_f.py: эталонные формулы на Python, запуск Chromium через Playwright, сравнение с допуском 0.1% и 73 проверки на 18 калькуляторах.
Автотесты калькуляторов собраны в двух файлах: test_calc.py и test_f.py. Схема одна: эталонные формулы на Python, запуск Chromium через Playwright, заполнение полей, сравнение результата с эталоном. Допуск — 0.1%. Всего 73 проверки на 18 калькуляторах.
Что именно проверяется
Тест не ограничивается итоговым числом. В набор входят:
- итоговые числа против эталона;
- отсутствие JS-ошибок;
- отсутствие перелива на ширине 375px;
- синтаксис JS через node --check;
- JSON-LD.
Эталонные числа лежат в словарях TEST_CASES внутри самих файлов.
Запуск
Обе части прогоняются последовательно одной командой.
python3 test_calc.py && python3 test_f.py
Пока прогон не зелёный, правки в JS и селекторы вносятся до устранения расхождений.
Что ломает тест
- изменение селектора .result-value;
- удаление кнопки «Пример»;
- новые поля без кейсов в TEST_CASES;
- любая console.error;
- горизонтальный перелив на мобильном.
Добавление нового калькулятора
Порядок из трёх шагов:
- создать HTML на базе base.py;
- добавить функцию-эталон и кейсы в TEST_CASES;
- запустить тест и поправить JS или селекторы до зелёного.
Так эталон и разметка остаются связанными: кейс описывает ожидаемое число, а прогон в Chromium подтверждает, что страница его выдаёт.
Читайте дальше
Новые замеры и статьи
Одно письмо, когда выходит новая статья или замер: разборы поломок, цифры цены и задержки, инструменты. Без рассылок «о нас» и без продаж. Отписаться можно ответом на любое письмо.