📝 Задания: самопроверка знаний
Теоретические вопросы
Вопрос 1. Что такое Auto QA?
Объясните своими словами, что значит автоматизированное тестирование и чем оно отличается от ручного.
Вопрос 2. Пирамида тестирования
Назовите три уровня пирамиды тестирования и объясните отличие каждого. Почему unit-тестов должно быть больше, чем E2E?
Вопрос 3. Что такое тестирование ПО?
Чем тестирование отличается от «просто поиска багов»? Что значит «проверка ожиданий»?
Вопрос 4. Соглашения pytest
По каким правилам pytest распознаёт файлы и функции-тесты? Какие имена нужны?
Вопрос 5. Что такое фикстура?
Объясните назначение @pytest.fixture. Что произойдёт, если создавать Calculator() внутри каждого теста, а не через фикстуру?
Вопросы по маркировкам
Вопрос 6. Маркировки pytest
Когда нужно использовать @pytest.mark.skip, а когда — @pytest.mark.xfail? В чём разница?
Вопрос 7. Пользовательские маркеры
Как зарегистрировать пользовательский маркер в pytest.ini? Что произойдёт, если не зарегистрировать?
Вопрос 8. Команда pytest -k
Чем команда pytest -k "sum" отличается от pytest -m positive_test?
Практические задания
Задание 1. Параметризация
Перепишите следующие тесты в один параметризованный тест:
def test_sub_case1(calculator):
assert calculator.sub(10, 3) == 7
def test_sub_case2(calculator):
assert calculator.sub(-5, -3) == -2
def test_sub_case3(calculator):
assert calculator.sub(0, 5) == -5
Используйте @pytest.mark.parametrize.
Задание 2. Маркировка
Добавьте к тесту test_division_by_zero маркер negative_test. Зарегистрируйте маркер в pytest.ini. Запустите только negative_test командой.
Задание 3. xfail
Напишите тест, который ожидаемо проваливается (xfail) — например, проверяет, что calculator.sum(1, 1) == 3. Запустите и объясните вывод pytest.
Задание 4. Класс SimpleMath
Перепишите тесты для SimpleMath из разбора ДЗ (урок 01), добавив параметризацию для методов square и cube. Добавьте краевые случаи.