Боб Белдербос: Сквозное тестир... Заметка
RSS Планета Python

Боб Белдербос: Сквозное тестирование каждого упражнения на Rust с помощью Playwright

Платформа Rust предлагает множество упражнений, каждое из которых требует от пользователя открыть редактор, написать код и проверить его с помощью бэкенда Rust. Этот процесс требует сквозного тестирования, чтобы гарантировать, что обновления не нарушат существующую функциональность. Ручное тестирование неэффективно и не охватывает полный цикл пользователя от входа в систему до получения обратной связи. Хотя для приложения Django и валидатора Rust существуют модульные тесты, они не тестируют интегрированный опыт выполнения упражнения. Playwright в сочетании с pytest предлагает лаконичное решение для такого сквозного тестирования. Одна тестовая функция Python параметризуется путем извлечения всех общедоступных упражнений и их решений из базы данных. Каждый параметризованный тест переходит к упражнению, вставляет правильное решение в редактор и проверяет отправку. Тест утверждает, что полученная обратная связь указывает на успешное завершение.Фикстуры с областью действия сессии в pytest используются для оптимизации производительности путем запуска браузера и входа в систему только один раз для всех тестов. Важным аспектом тестирования Playwright является управление временем ожидания элементов, особенно для редактора CodeMirror, путем явного ожидания видимости элемента и инициализации его экземпляра JavaScript. Был реализован обходной путь, чтобы избежать ловушки асинхронного контекста Django при создании тестовых пользователей, используя отдельную фикстуру, которая выполняется перед фикстурами Playwright, используя django_db_blocker. Сквозные тесты разработаны для работы с реальной базой данных и фактическим валидатором Rust, обеспечивая реалистичное интеграционное тестирование. Эти тесты выполняются локально перед крупными отправками, в то время как среды CI в основном запускают более быстрые модульные тесты. Этот подход автоматически тестирует недавно добавленные упражнения без необходимости написания нового тестового кода, а любые изменения в интерфейсе проверяются на соответствие этому интегрированному набору регрессионных тестов. Playwright предпочтительнее Selenium благодаря его современному и эргономичному интерфейсу, при этом управление временем ожидания элементов является решаемой задачей.