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>