HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>4 июл 2019</li>
2 <ul><li>4 июл 2019</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Без тестирования не создать качественное веб-приложение. Рассказываем, как протестировать код на Python.</p>
4 </ul><p>Без тестирования не создать качественное веб-приложение. Рассказываем, как протестировать код на Python.</p>
5 <p> vlada_maestro / shutterstock</p>
5 <p> vlada_maestro / shutterstock</p>
6 <p>Автор в сфере IT, digital, экономики и финансов. Ведёт некоммерческий проект для начинающих писателей "ЛитЦех".</p>
6 <p>Автор в сфере IT, digital, экономики и финансов. Ведёт некоммерческий проект для начинающих писателей "ЛитЦех".</p>
7 <p>Модульное тестирование позволяет проверить, правильно ли работают отдельные части программы и соответствуют ли они заявленным требованиям. Разработчики используют модульные, или unit-тесты по-разному, в зависимости от ситуации и задач:</p>
7 <p>Модульное тестирование позволяет проверить, правильно ли работают отдельные части программы и соответствуют ли они заявленным требованиям. Разработчики используют модульные, или unit-тесты по-разному, в зависимости от ситуации и задач:</p>
8 <ul><li>при подходе TDD (Test-Driven Development, разработка через тестирование) пишут тесты до начала создания приложения, а потом ориентируются на них в процессе программирования;</li>
8 <ul><li>при подходе TDD (Test-Driven Development, разработка через тестирование) пишут тесты до начала создания приложения, а потом ориентируются на них в процессе программирования;</li>
9 <li>при рефакторинге всей кодовой базы или отдельных ее частей тесты пишут перед началом изменения программы, чтобы не "поломать" ее функциональность;</li>
9 <li>при рефакторинге всей кодовой базы или отдельных ее частей тесты пишут перед началом изменения программы, чтобы не "поломать" ее функциональность;</li>
10 <li>при найденных в программе багах unit-тесты пишут для удобства их отслеживания и исправления.</li>
10 <li>при найденных в программе багах unit-тесты пишут для удобства их отслеживания и исправления.</li>
11 </ul><p>Модуль применительно к unit-тестированию - это наименьший компонент, который можно скомпилировать.</p>
11 </ul><p>Модуль применительно к unit-тестированию - это наименьший компонент, который можно скомпилировать.</p>
12 <p>Для модульного тестирования в языке Python есть встроенный модуль PyUnit (<a>unittest</a>). Вот некоторые из его преимуществ:</p>
12 <p>Для модульного тестирования в языке Python есть встроенный модуль PyUnit (<a>unittest</a>). Вот некоторые из его преимуществ:</p>
13 <ul><li>возможность автоматизированного тестирования;</li>
13 <ul><li>возможность автоматизированного тестирования;</li>
14 <li>возможность собирать тесты в группы;</li>
14 <li>возможность собирать тесты в группы;</li>
15 <li>уменьшение дублирования кода при схожих объектах тестирования благодаря ООП-стилю;</li>
15 <li>уменьшение дублирования кода при схожих объектах тестирования благодаря ООП-стилю;</li>
16 <li>возможность собирать результаты выполнения тестов для отчета.</li>
16 <li>возможность собирать результаты выполнения тестов для отчета.</li>
17 </ul><p>Инструментарий unittest состоит из четырех основных частей:</p>
17 </ul><p>Инструментарий unittest состоит из четырех основных частей:</p>
18 <ul><li>test case - то, из чего собираются тесты, наименьшая единица тестирования;</li>
18 <ul><li>test case - то, из чего собираются тесты, наименьшая единица тестирования;</li>
19 <li>test fixture - среда выполнения тестов, используется для упрощения подготовки нужного состояния test case, тем самым экономя время;</li>
19 <li>test fixture - среда выполнения тестов, используется для упрощения подготовки нужного состояния test case, тем самым экономя время;</li>
20 <li>test suite - набор готовых тестовых случаев, позволяет упорядочить и управлять комплектами тестов;</li>
20 <li>test suite - набор готовых тестовых случаев, позволяет упорядочить и управлять комплектами тестов;</li>
21 <li>test runner - компонент, который запускает тесты и выводит пользователю результат.</li>
21 <li>test runner - компонент, который запускает тесты и выводит пользователю результат.</li>
22 </ul><p>Помимо встроенного unittest, существует много фреймворков для тестирования кода на Python: Pytest, Nose, Allure, Selene, Selenium и другие.</p>
22 </ul><p>Помимо встроенного unittest, существует много фреймворков для тестирования кода на Python: Pytest, Nose, Allure, Selene, Selenium и другие.</p>
23 <p>Допустим, у нас есть файл calc.py с набором функций. Чтобы протестировать его, нужно сначала создать файл utest_calc.py. Затем добавить в него следующий код:</p>
23 <p>Допустим, у нас есть файл calc.py с набором функций. Чтобы протестировать его, нужно сначала создать файл utest_calc.py. Затем добавить в него следующий код:</p>
24 <p>import unittest import calc</p>
24 <p>import unittest import calc</p>
25 <p>class CalcTest (unittest.TestCase): def test_add (self): self.assertEqual (calc.add (1, 2), 3)</p>
25 <p>class CalcTest (unittest.TestCase): def test_add (self): self.assertEqual (calc.add (1, 2), 3)</p>
26 <p>def test_sub (self): self.assertEqual (calc.sub (4, 2), 2)</p>
26 <p>def test_sub (self): self.assertEqual (calc.sub (4, 2), 2)</p>
27 <p>def test_mul (self): self.assertEqual (calc.mul (2, 5), 10)</p>
27 <p>def test_mul (self): self.assertEqual (calc.mul (2, 5), 10)</p>
28 <p>def test_div (self): self.assertEqual (calc.div (8, 4), 2)</p>
28 <p>def test_div (self): self.assertEqual (calc.div (8, 4), 2)</p>
29 <p>if __name__ == '__main__': unittest.main ()</p>
29 <p>if __name__ == '__main__': unittest.main ()</p>
30 <p>Пора запустить его:</p>
30 <p>Пора запустить его:</p>
31 <p>Теперь вы увидите краткую информацию о том, что все тесты успешно пройдены:</p>
31 <p>Теперь вы увидите краткую информацию о том, что все тесты успешно пройдены:</p>
32 <p>… ---------------------------------------------------------------------- Ran 4 tests in 0.000s OK</p>
32 <p>… ---------------------------------------------------------------------- Ran 4 tests in 0.000s OK</p>
33 - <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть прогрмму</a>
33 + <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>