0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p><strong>Python</strong>- один из лучших языков для автоматизации тестирования. Именно так заявил Dan Callahan в<a>докладе на PyCon 2018</a>. И привёл 10 причин, почему при автоматизации тестирования лучше выбирать "Пайтон". Давайте с ними ознакомимся.</p>
1
<p><strong>Python</strong>- один из лучших языков для автоматизации тестирования. Именно так заявил Dan Callahan в<a>докладе на PyCon 2018</a>. И привёл 10 причин, почему при автоматизации тестирования лучше выбирать "Пайтон". Давайте с ними ознакомимся.</p>
2
<h2>Причина 1: Дзэн Python</h2>
2
<h2>Причина 1: Дзэн Python</h2>
3
<p>Дзэн Python в<a>PEP20</a>- прекрасное руководство для тест-автоматизации. Тесты описывают тестируемую функциональность, поэтому они должны быть читабельны и наглядны. Лучше несколько простых шагов, чем один сложный. Код тестов - естественный мост между шагами тестов и программными вызовами, а выразительная элегантность Python подходит для этого как нельзя лучше. В общем, вы всегда можете ознакомиться с Дзэн Python самостоятельно, набрав в интерпретаторе import this.</p>
3
<p>Дзэн Python в<a>PEP20</a>- прекрасное руководство для тест-автоматизации. Тесты описывают тестируемую функциональность, поэтому они должны быть читабельны и наглядны. Лучше несколько простых шагов, чем один сложный. Код тестов - естественный мост между шагами тестов и программными вызовами, а выразительная элегантность Python подходит для этого как нельзя лучше. В общем, вы всегда можете ознакомиться с Дзэн Python самостоятельно, набрав в интерпретаторе import this.</p>
4
<h2>Причина 2: Pytest</h2>
4
<h2>Причина 2: Pytest</h2>
5
<p><strong>Pytest</strong>- хороший тест-фреймворк, доступный сейчас не только на Python. Он помогает справляться с любыми функциональными тестами. Тест-кейсы с его помощью пишутся просто, как функции, и могут принимать параметризированные входные данные. Если вы избегаете глобальных переменных, побочные эффекты отсутствуют. Базовые утверждения (assertions) имеют автоматический самоанализ, тесты можно фильтровать в процессе выполнения.</p>
5
<p><strong>Pytest</strong>- хороший тест-фреймворк, доступный сейчас не только на Python. Он помогает справляться с любыми функциональными тестами. Тест-кейсы с его помощью пишутся просто, как функции, и могут принимать параметризированные входные данные. Если вы избегаете глобальных переменных, побочные эффекты отсутствуют. Базовые утверждения (assertions) имеют автоматический самоанализ, тесты можно фильтровать в процессе выполнения.</p>
6
<p>Есть ряд плагинов, дополнительно расширяющих возможности<strong>Pytest</strong>. Можно запускать тесты параллельно, задействовать сценарии<strong>Gherkin</strong>, интегрироваться с другими фреймворками: Django, Flask. Можно уверенно сказать, что Pytest - лучшее, что есть на сегодня.</p>
6
<p>Есть ряд плагинов, дополнительно расширяющих возможности<strong>Pytest</strong>. Можно запускать тесты параллельно, задействовать сценарии<strong>Gherkin</strong>, интегрироваться с другими фреймворками: Django, Flask. Можно уверенно сказать, что Pytest - лучшее, что есть на сегодня.</p>
7
<h2>Причина 3: программные пакеты</h2>
7
<h2>Причина 3: программные пакеты</h2>
8
<p>У Python есть богатая библиотека полезных пакетов, предназначенных для тестирования: - pytest, - unittest, - paramiko, - requests, - doctest, - Selenium WebDriver, - tox, - logging, - Splinter, - Hypothesis, и другие.</p>
8
<p>У Python есть богатая библиотека полезных пакетов, предназначенных для тестирования: - pytest, - unittest, - paramiko, - requests, - doctest, - Selenium WebDriver, - tox, - logging, - Splinter, - Hypothesis, и другие.</p>
9
<p>Это готовые ингредиенты для ваших рецептов автоматизации. И никакого велосипеда изобретать не надо.</p>
9
<p>Это готовые ингредиенты для ваших рецептов автоматизации. И никакого велосипеда изобретать не надо.</p>
10
<h2>Причина 4: мультипарадигма</h2>
10
<h2>Причина 4: мультипарадигма</h2>
11
<p>Python и функционален, и объектно-ориентирован. Он даёт возможность решать, что лучше подойдет для ваших задач - функции или классы. Это полезно, ведь исключаются побочные эффекты распределённых функций, а простой синтаксис функций делает их предельно понятными. К тому же, Pytest использует функции для кейсов, а не запихивает их в классы, как JUnit.</p>
11
<p>Python и функционален, и объектно-ориентирован. Он даёт возможность решать, что лучше подойдет для ваших задач - функции или классы. Это полезно, ведь исключаются побочные эффекты распределённых функций, а простой синтаксис функций делает их предельно понятными. К тому же, Pytest использует функции для кейсов, а не запихивает их в классы, как JUnit.</p>
12
<h2>Причина 5: типизируйте, как хотите</h2>
12
<h2>Причина 5: типизируйте, как хотите</h2>
13
<p>Встроенная в Python<strong>динамическая типизация</strong>хорошо подходит для тест-автоматизации, ведь основная часть функциональных тестов выше юнит-уровня не требует повышенного внимания к типам. Но если вам потребуются статичные типы - не беда, есть mypy, Pyre, MonkeyType.</p>
13
<p>Встроенная в Python<strong>динамическая типизация</strong>хорошо подходит для тест-автоматизации, ведь основная часть функциональных тестов выше юнит-уровня не требует повышенного внимания к типам. Но если вам потребуются статичные типы - не беда, есть mypy, Pyre, MonkeyType.</p>
14
<h2>Причина 6: IDE</h2>
14
<h2>Причина 6: IDE</h2>
15
<p>Хорошая поддержка IDE упрощает использование языка и фреймворков. Если говорить о тестировании на Python, у нас есть<strong>JetBrains PyCharm</strong>. Среда поддерживает визуальное тестирование с unittest, pytest и doctest сразу "из коробки", а профессиональная версия имеет поддержку фреймворков веб-разработки и BDD (к примеру, behave, pytest-bdd, lettuce). Если же хотите что-то полегче, есть среда Visual Studio Code которая сегодня очень популярна и поддерживают много полезного: сниппеты, дебаг, окружения, отладку, работу с терминалом командной строки прямо в окне и т. п. Также отлично работают Atom, PyDev, Sublime и Notepad++.</p>
15
<p>Хорошая поддержка IDE упрощает использование языка и фреймворков. Если говорить о тестировании на Python, у нас есть<strong>JetBrains PyCharm</strong>. Среда поддерживает визуальное тестирование с unittest, pytest и doctest сразу "из коробки", а профессиональная версия имеет поддержку фреймворков веб-разработки и BDD (к примеру, behave, pytest-bdd, lettuce). Если же хотите что-то полегче, есть среда Visual Studio Code которая сегодня очень популярна и поддерживают много полезного: сниппеты, дебаг, окружения, отладку, работу с терминалом командной строки прямо в окне и т. п. Также отлично работают Atom, PyDev, Sublime и Notepad++.</p>
16
<h2>Причина 7: командная строка</h2>
16
<h2>Причина 7: командная строка</h2>
17
<p>Python и командная строка - это брак, заключённый на небесах. Весь процесс автотестирования может управляться посредством командной строки, что не может не радовать.<a>Pipenv</a>позволяет управлять окружениями и пакетами. В любом тест-фреймворке можно запустить консоль для поиска и запуска тестов. Не нужно сначала создавать тестовый код, ведь Python - интерпретируемый язык, что тоже упрощает запуск. Богатая поддержка командной строки делает простым управление тестированием и вручную, и посредством инструментов либо билд-скриптов.</p>
17
<p>Python и командная строка - это брак, заключённый на небесах. Весь процесс автотестирования может управляться посредством командной строки, что не может не радовать.<a>Pipenv</a>позволяет управлять окружениями и пакетами. В любом тест-фреймворке можно запустить консоль для поиска и запуска тестов. Не нужно сначала создавать тестовый код, ведь Python - интерпретируемый язык, что тоже упрощает запуск. Богатая поддержка командной строки делает простым управление тестированием и вручную, и посредством инструментов либо билд-скриптов.</p>
18
<p>Вишенка на торте - модули автоматизации, которые можно вызывать непосредственно из интерпретатора Python REPL и даже (что ещё лучше) сразу из блокнота Jupyter.</p>
18
<p>Вишенка на торте - модули автоматизации, которые можно вызывать непосредственно из интерпретатора Python REPL и даже (что ещё лучше) сразу из блокнота Jupyter.</p>
19
<h2>Причина 8: лёгкость входа</h2>
19
<h2>Причина 8: лёгкость входа</h2>
20
<p>Python дружелюбен к новичкам, причём не столь важно, делаете ли вы первые шаги в программировании или имеете богатый опыт. Это плюс Python как языка автоматизации, ведь тесты можно и нужно создавать просто и быстро. Тратить время - непозволительная роскошь, особенно когда на руках новые фичи, которые срочно нужно проверить.</p>
20
<p>Python дружелюбен к новичкам, причём не столь важно, делаете ли вы первые шаги в программировании или имеете богатый опыт. Это плюс Python как языка автоматизации, ведь тесты можно и нужно создавать просто и быстро. Тратить время - непозволительная роскошь, особенно когда на руках новые фичи, которые срочно нужно проверить.</p>
21
<h2>Причина 9: возможность масштабирования</h2>
21
<h2>Причина 9: возможность масштабирования</h2>
22
<p>Несмотря на низкий порог входа, Python - не игрушка. Он способен решать промышленные задачи, а разработка может масштабироваться за счёт значимого синтаксиса, хорошей структуры, модульности и богатой экосистемы инструментов и пакетов. Нельзя не упомянуть и гибкость командной строки - она позволит вам встроиться в любой процесс либо инструмент.</p>
22
<p>Несмотря на низкий порог входа, Python - не игрушка. Он способен решать промышленные задачи, а разработка может масштабироваться за счёт значимого синтаксиса, хорошей структуры, модульности и богатой экосистемы инструментов и пакетов. Нельзя не упомянуть и гибкость командной строки - она позволит вам встроиться в любой процесс либо инструмент.</p>
23
<h2>Причина 10: популярность</h2>
23
<h2>Причина 10: популярность</h2>
24
<p>Python - очень популярный язык программирования. Он регулярно выходит в топ на TIOBE, Stack Overflow, GitHub. Его выбирают веб-разработчики, инженеры инфраструктур, тест-автоматизаторы, дата-аналитики. Профессиональное сообщество Python также помогает продвигать язык. Разработчиков очень много, поэтому и с онлайн-поддержкой проблем не будет. Да и в ближайшем обозримом будущем этот язык никуда не денется.</p>
24
<p>Python - очень популярный язык программирования. Он регулярно выходит в топ на TIOBE, Stack Overflow, GitHub. Его выбирают веб-разработчики, инженеры инфраструктур, тест-автоматизаторы, дата-аналитики. Профессиональное сообщество Python также помогает продвигать язык. Разработчиков очень много, поэтому и с онлайн-поддержкой проблем не будет. Да и в ближайшем обозримом будущем этот язык никуда не денется.</p>
25
<h2>Выводы</h2>
25
<h2>Выводы</h2>
26
<p>При выборе языков автоматизации вы можете отдать предпочтение Java, C# и Ruby, что тоже неплохие варианты. Но Python… Python - это Python, единственный и неповторимый. Впрочем, вы можете убедиться в этом сами, посмотрев сравнение разных языков для автоматизации:</p>
26
<p>При выборе языков автоматизации вы можете отдать предпочтение Java, C# и Ruby, что тоже неплохие варианты. Но Python… Python - это Python, единственный и неповторимый. Впрочем, вы можете убедиться в этом сами, посмотрев сравнение разных языков для автоматизации:</p>
27
<p><em>Статья подготовлена специально для OTUS по материалам "<a>Why Python is great for test automation</a>" и "<a>The best programming language for test automation</a>".</em></p>
27
<p><em>Статья подготовлена специально для OTUS по материалам "<a>Why Python is great for test automation</a>" и "<a>The best programming language for test automation</a>".</em></p>
28
28