В моем последнем блоге о юнит-тестировании мы говорили о том, что такое юнит-тестирование и зачем оно нам нужно, а также реализовали его в какой-то степени. Этот блог является его продолжением. Чтобы понять это, вы должны сначала пройти мою первую часть модульного тестирования.
И в этом блоге мы реализуем модульное тестирование и увидим результаты двух сценариев в коде.
Поэтому я предложил имена файлов для обоих файлов, а именно square_area_test.py
и square_area.py
. Теперь мы добавим код модульного тестирования.
Основная операция будет в файле square_area.py
, а код ниже:
def square_area(s): return (s*s)
Мы начнем тестировать код в файле square_area_test.py
, добавив первую строку:
import unittest
Затем мы добавляем класс с именем TestSquare
, в котором мы определяем различные методы, и для создания различных ситуаций мы используем метод assertAlmostEqual
. Ниже приведен код дальнейших шагов тестирования:
from square_area import* import unittest class TestSquare(unittest.TestCase): def test_area(self): self.assertAlmostEqual(square_area(9),9) self.assertAlmostEqual(square_area(0),0) self.assertAlmostEqual(square_area(1),1) self.assertAlmostEqual(square_area(1.9),1,9)
Прежде чем тестировать приведенный выше скрипт, запустите модуль unittest
с указанием -m
в коде.
!python -m unittest square_area_test.py
Вывод должен показать вам «ОК», что означает, что тест прошел успешно.
Что, если мы внесем некоторые изменения в предложение-утверждение?
from square_area import* import unittest class TestSquare(unittest.TestCase): def test_area(self): self.assertAlmostEqual(square_area(9),9) self.assertAlmostEqual(square_area(0),0) self.assertAlmostEqual(square_area(1),1) self.assertAlmostEqual(square_area(1.9),0)
В последней строке я заменил 1.9 на 0 и при запуске этого теста. Снова указав -m
.
!python -m unittest square_area_test.py
Вывод покажет вам «F», что означает неудачу, а также покажет AssertionError
, следовательно, этот тест был неудачным. Помимо сообщения об ошибке, вы можете увидеть причину, по которой произошла ошибка, и решить ее соответствующим образом. Это были два типа результатов, ожидаемых при тестировании.
Прежде чем мы закончим этот блог, есть еще одно важное замечание, о котором пользователь должен узнать. В коде, который мы разработали, функция def всегда должна начинаться с ключевого слова test
, как я использовал test_area
.
Посмотрим, что произойдет, если мы этого не сделаем.
from square_area import* import unittest class TestSquare(unittest.TestCase): def area(self): self.assertAlmostEqual(square_area(9),9) self.assertAlmostEqual(square_area(0),0) self.assertAlmostEqual(square_area(1),1) self.assertAlmostEqual(square_area(1.9),1.9)
Я удалил ключевое слово test и оставил только area
. Теперь мы запускаем его
!python -m unittest test_volume_cuboid.py
Вывод, который вы видите, будет показывать «ОК», а также «Выполнить 1 тест», это означает, что он выполнил только 1 тест, и, поскольку он был правильным, он дал результат, поэтому мы всегда добавляем ключевое слово test или ваш скрипт не полностью проверен .
Ссылка: https://www.datacamp.com/community/tutorials/unit-testing-python
Итак, это были некоторые сценарии и способы тестирования вашего сценария. Увидимся в следующем!