Различия между версиями 13 и 14
Версия 13 от 2021-04-26 13:21:10
Размер: 6180
Редактор: FrBrGeorge
Комментарий:
Версия 14 от 2021-04-26 13:28:18
Размер: 6208
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 5: Строка 5:
  * (без классов) просто файл `test_что-то-там.py` и `assert`
  * (с
классом) просто файл `test_что-то-там.py` и `self.assertЧто-то()` (assert тоже можно, но так правильнее)
  * Просто файл `test_что-то-там.py` и класс, унаследованный от `unittest.TestCase`, с методами вида `test_что-то-там()` и `self.assertЧто-то()` внутри (assert тоже можно, но так правильнее)

04/26 Тестирование

  • Что могут и чего не могут тесты
  • Использование unittest

    • Просто файл test_что-то-там.py и класс, унаследованный от unittest.TestCase, с методами вида test_что-то-там() и self.assertЧто-то() внутри (assert тоже можно, но так правильнее)

    • Проверка исключений: контекст-менеджер
  • {i} Пример: тестирование примитивной функции

  • <!> Задача_1: написать и оттестировать функцию, решающую квадратное уравнение с ненулевым коэффициентом при старшем члене

    • функция solveSquare() получает на вход коэффициенты квадратного уравнения: a, b, c. Гарантируется, что a != 0.
    • функция должна возвращать корни уравнения a*x^2 + b*x + c = 0
      • при положительном дискриминанте (D = b^2 - 4*a*c > 0): возвращать кортеж из двух корней, меньший - первый

      • при D = 0: возвращать кортеж из двух одинаковых корней
      • при D < 0: расчет корней не реализован, возвращать None

    • тесты для solveSquare() должны быть написаны при помощи unittest, и включать:
      1. тест для случая D > 0

      2. тест для случая D = 0
      3. тест для случая D < 0

    • Контрольная проверка: все тесты проходят
    • Контрольная проверка: при замене в коде проверке дискриминанта D с 0 на 1
      1. Не проходит при 2, 3, 1.125
      2. Не проходит при 2, 3, 1
      3. Не проходит при 2, 3, 1.1
  • Квазиобъекты (мокеры) unittest.mock]

    • Зачем нужны и пример в документации
  • {i} Пример простого мокера-метода с отчётом

  • {i} Пример мокера-метода, возвращающего заданное значение

  • Фикстуры. setUp() и tearDown()
  • {i} пример с подготовкой и открытием файла в качестве фикстуры, а также удалением его в конце

Д/З

  • Доделать Задачу_1, если ещё не
  • <!> Задача_2.

    • Написать программу на tkinter для решения уравнений вида $$ax^2+bx+c$$ (с любыми коэффициентами), в которой имеется:

      • три окна ввода коэффициентов с соответствующими надписями,
      • кнопка «вычислить»,
      • текстовое поле для вывода результатов (два корня через пробел, один корень, «∅» при отсутствии корней и «∞», если годится любой x)

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

        • Не нужно! -- FrBrGeorge 2021-04-26 09:20:59

    • Решение оформить в виде примитивного MVC

      • Возможно, часть Controller не понадобится в силу примитивности

      • Ни часть Model, ни часть Controller (если она есть) не должны использовать возможности tkniter

    • В тестах
      • Изготовить качественный Mock для имитации View
      • Оттестировать все различные комбинации параметров (для квадратного уравнения, для линейного и для вырожденного)
      • Оттестировать неправильный ввод
    • {3} (необязательно) замерить тестовое покрытие и настроить замер так, чтобы он показывал 100%

LecturesCMC/PythonDevelopment2021/Prac/10_Testing (последним исправлял пользователь FrBrGeorge 2021-04-26 13:28:18)