Автоматизированное тестирование является неотъемлемой частью современной разработки программного обеспечения, улучшая качество программного обеспечения, ускоряя циклы разработки и снижая стоимость регрессионного тестирования. В мире Python Behave служит инструментом разработки на основе поведения (BDD), который предоставляет разработчикам понятный и удобочитаемый способ написания и выполнения тестовых примеров. В этой статье будет показано, как использовать библиотеку Behave в Python в сочетании с BDD для выполнения автоматического тестирования, а также приведены некоторые практические примеры кода.
BDD — это методология разработки программного обеспечения, в которой упор делается на написание понятных спецификаций на естественном языке путем работы с заинтересованными сторонами (такими как клиенты, менеджеры по продуктам, разработчики). Основная идея BDD — способствовать разработке программного обеспечения путем определения спецификаций поведения системы и обеспечения соответствия разработанного программного обеспечения этим спецификациям.
Behave — это среда тестирования BDD для Python.,Это позволяет разработчикам писать простые для понимания поведенческие спецификации.,И преобразуйте эти спецификации в исполняемые тестовые примеры. Синтаксис Behave прост и интуитивно понятен.,Написание тестовых сценариев с использованием языка Gherkin.,Напримерgiven
, when
, then
и другие ключевые слова,Сделайте тестовые примеры понятными для нетехнических людей.
первый,Убедитесь, что Python и pip установлены. Затем,Вы можете сделать это с помощью следующей команды:
pip install behave
Допустим, мы разрабатываем простое приложение-калькулятор.,мы хотим написать немногоBehaveПротестируйте его базовую функциональность.。наспервый Создайте файл с именемfeatures
каталог,Затемсуществовать Должен Оглавление Вниз Создайте файл с именемcalculator.feature
файлы,Этот файл будет содержать наши тестовые примеры.
# calculator.feature
Feature: Calculator
As a user
I want to perform basic arithmetic operations
So that I can use the calculator for calculations
Scenario: Add two numbers
Given I have entered 5 into the calculator
And I have entered 3 into the calculator
When I press add
Then the result should be 8 on the screen
Среди приведенного выше кода,насопределяет файл с именемCalculator
функция,и сценаAdd two numbers
,В этом сценарии описывается процесс ввода двух чисел в калькулятор и выполнения операции сложения. Следующий,Нам необходимо реализовать эти шаги.
Чтобы сообщить Behave, как выполнять наши тестовые шаги.,наснуждатьсяхотетьреализовать определение этих шагов。существоватьfeatures
Оглавление Вниз Создайте файл с именемsteps
каталог,Затем создайте файл Python в этом каталоге.,Напримерcalculator_steps.py
,И напишите код определений шагов.
# calculator_steps.py
from behave import given, when, then
@given('I have entered {number} into the calculator')
def step_enter_number(context, number):
context.number = int(number)
@when('I press add')
def step_press_add(context):
context.result = context.number + context.number
@then('the result should be {result} on the screen')
def step_check_result(context, result):
assert context.result == int(result), f"Expected {result}, but got {context.result}"
В приведенном выше коде,нас Определены три шага:step_enter_number
для ввода цифр,step_press_add
Используется для выполнения операций сложения.,step_check_result
Используется для проверки правильности результатов.。
После завершения тестового примера и определений шагов,нас Можетсуществовать Войдите в терминалfeatures
Оглавление,И запустите Behave, чтобы выполнить тест:
behave
Если все в порядке, вы должны увидеть, как Behave выводит результаты теста и указывает, пройден ли тестовый пример или нет.
Из этой статьи мы узнали, как использовать библиотеку Behave в Python в сочетании с BDD для автоматического тестирования. Благодаря интуитивно понятному синтаксису Behave и простым для понимания сценариям тестирования разработчики могут более эффективно писать и выполнять тестовые сценарии, тем самым улучшая качество программного обеспечения и ускоряя процесс разработки.
В дополнение к базовым сценариям тестирования Behave также поддерживает структуру и пример сценария, что позволяет нам более гибко писать тестовые сценарии, особенно для нескольких наборов входных данных.
Давайте расширим приведенный выше пример и скажем, что мы хотим протестировать функции вычитания и умножения. Мы можем использовать схему сценария, чтобы определить общий сценарий тестирования и предоставить несколько наборов входных данных в примере.
# calculator.feature
Feature: Calculator
As a user
I want to perform basic arithmetic operations
So that I can use the calculator for calculations
Scenario: Add two numbers
Given I have entered 5 into the calculator
And I have entered 3 into the calculator
When I press add
Then the result should be 8 on the screen
Scenario Outline: Subtract two numbers
Given I have entered <num1> into the calculator
And I have entered <num2> into the calculator
When I press subtract
Then the result should be <result> on the screen
Examples:
| num1 | num2 | result |
| 10 | 5 | 5 |
| 8 | 3 | 5 |
| 20 | 15 | 5 |
Scenario Outline: Multiply two numbers
Given I have entered <num1> into the calculator
And I have entered <num2> into the calculator
When I press multiply
Then the result should be <result> on the screen
Examples:
| num1 | num2 | result |
| 2 | 3 | 6 |
| 5 | 4 | 20 |
| 10 | 2 | 20 |
Теперь нам нужно обновить файл определения шага для обработки новых действий.
# calculator_steps.py
from behave import given, when, then
@given('I have entered {number:d} into the calculator')
def step_enter_number(context, number):
context.number = number
@when('I press add')
def step_press_add(context):
context.result = context.result + context.number
@when('I press subtract')
def step_press_subtract(context):
context.result = context.result - context.number
@when('I press multiply')
def step_press_multiply(context):
context.result = context.result * context.number
@then('the result should be {result:d} on the screen')
def step_check_result(context, result):
assert context.result == result, f"Expected {result}, but got {context.result}"
В приведенном выше определении шага,насдобавленstep_press_subtract
иstep_press_multiply
справиться Вычитаниеи Операция умножения。в то же время,Мы анализируем число в целочисленном типе в определении шага.,для правильного выполнения математических действий.
С помощью расширения сценария ###: использование тегов для управления сценариями тестирования.
В реальной разработке программного обеспечения,Часто необходимо запускать различные типы тестов.,Например, дымовое тестирование, регрессионное тестирование и т. д. Для лучшего управления тестовыми сценариями,Behave предоставляет функцию тегов,Сценарии тестирования можно классифицировать по разным меткам.,В целях выборочного Запуска тестов.
Предположим, мы хотим классифицировать предыдущие тестовые сценарии по функциональности и использовать теги для управления ими.
# calculator.feature
@addition
Feature: Calculator Addition
As a user
I want to perform addition operation
So that I can add numbers
Scenario: Add two numbers
Given I have entered 5 into the calculator
And I have entered 3 into the calculator
When I press add
Then the result should be 8 on the screen
@subtraction
Feature: Calculator Subtraction
As a user
I want to perform subtraction operation
So that I can subtract numbers
Scenario Outline: Subtract two numbers
Given I have entered <num1> into the calculator
And I have entered <num2> into the calculator
When I press subtract
Then the result should be <result> on the screen
Examples:
| num1 | num2 | result |
| 10 | 5 | 5 |
| 8 | 3 | 5 |
| 20 | 15 | 5 |
@multiplication
Feature: Calculator Multiplication
As a user
I want to perform multiplication operation
So that I can multiply numbers
Scenario Outline: Multiply two numbers
Given I have entered <num1> into the calculator
And I have entered <num2> into the calculator
When I press multiply
Then the result should be <result> on the screen
Examples:
| num1 | num2 | result |
| 2 | 3 | 6 |
| 5 | 4 | 20 |
| 10 | 2 | 20 |
В приведенном выше примере,Мы определяем функцию для каждой функции (сложение, вычитание, умножение).,и использовать@
символ для каждогоScenarioТеги добавлены。сейчассуществовать,Мы можем выборочно Запускать тесты по тегам.
хотеть Запуск тестов для определенного ярлыка,Можно использовать-k
вариант и укажите имя метки。
behave -k addition
Это будет выполняться только с тегами@addition
тестовый сценарий。
Если мы хотим исключить определенные теги из тестирования,Можно использовать-k
Опции исуществовать Добавить перед названием ярлыка~
символ。
behave -k ~multiplication
Это будет выполняться, за исключением тех, которые отмечены как@multiplication
Все тестовые сценарии, кроме。
с помощью тегов,Мы можем управлять более гибко и,Для удовлетворения различных потребностей и сценариев тестирования.
Помимо написания и Запуска тестовиспользовать исключение,Для автоматического тестирования,Интеграция и создание читаемых отчетов об испытаниях также является очень важной частью. В области Python,Behave предоставляет множество инструментов и плагинов.,Может помочь нам лучше интегрировать процесс тестирования и создавать подробные отчеты.
Behave можно интегрировать со многими популярными платформами и инструментами тестирования, такими как Selenium для тестирования веб-интерфейса, Appium для тестирования мобильных приложений и т. д. Благодаря этой интеграции мы можем использовать эти инструменты в тестовых примерах Behave и добиться более комплексного автоматического тестирования.
Behave также предоставляет различные плагины для создания отчетов.,На основе результатов испытаний могут быть созданы удобные для чтения отчеты об испытаниях. Например,behave-html-formatter
Плагины могут генерироватьHTMLФорматировать отчет,Он содержит подробную информацию о сценарии тестирования, пройденных и неудавшихся тестовых случаях, времени выполнения и т. д. Установка и использование этих плагинов может дать нам лучшее понимание того, как выполняются наши тесты.,и поделитесь им с другими членами команды или заинтересованными сторонами.
иногда,Возможно, нам придется взаимодействовать с другими системами.,Например, база данных, API и т. д. Behave позволяет нам Пользовательская реализация шага,Выполните эти операции, написав Pythonкод,и интегрировать его в процесс тестирования. Таким образом,Мы можем реализовать более гибкие и сложные сценарии тестирования.,Охватите больше функций и бизнес-логики.
При написании автоматизированных тестов стоит обратить внимание на некоторые вещи:
Следуя этим лучшим практики,Может помочь нам создать надежную и надежную систему автоматического тестирования.,Повышайте качество программного обеспечения и эффективность разработки.
В этой статье мы исследуем, как использовать Python для автоматического тестирования, уделяя особое внимание сочетанию Behave и BDD. Во-первых, мы поняли основную концепцию BDD, которая заключается в содействии разработке программного обеспечения посредством четко определенных поведенческих спецификаций и обеспечении соответствия программного обеспечения спецификациям. Впоследствии мы представили Behave как среду тестирования BDD на Python, которая обеспечивает простой и интуитивно понятный синтаксис и понятные тестовые сценарии, что позволяет разработчикам более эффективно писать и выполнять тестовые сценарии.
На примерах мы научились писать базовые тестовые примеры Behave, а также определять и реализовывать этапы тестирования. Мы также углубимся в то, как использовать сценарий Схема и пример для обработки случая нескольких наборов входных данных и показывает, как использовать управление тегами и избирательность. сценарии тестирования и способы расширения тестовых случаев для покрытия большей функциональности.
кроме,Мы также рассмотрим некоторые расширенные варианты использования,Включает интеграцию с другими платформами и инструментами тестирования.,и способы создания подробных отчетов. наконец,нас Поделились некоторыми автоматическими тестамилучшие практика, в том числе сохранение простоты тестовых примеров, хорошо соглашение об имен, часто выполняйте тесты, Регулярно просматривайте и обновляйте тест-кейсы,а также Правильное использование контроля версий。
Подводя итог, можно сказать, что метод автоматического тестирования, сочетающий Behave и BDD, предоставляет разработчикам Python мощный и эффективный инструмент тестирования. Понимая и применяя эти методы, мы можем улучшить качество программного обеспечения, ускорить циклы разработки и снизить стоимость регрессионного тестирования, делая процесс разработки программного обеспечения более плавным и надежным.