Мой опыт использования pytest для написания автотестов
Привет всем! Я хотел бы поделиться с вами своим опытом написания автотестов с использованием фреймворка pytest․ За последнее время я столкнулся с задачей написания набора автотестов для некоторых функций, включая функции sum, mul, div и sub․
Во-первых, я хотел бы отметить преимущества использования pytest․ Фреймворк pytest предоставляет удобный и эффективный способ написания тестовых сценариев․ Вместо того, чтобы создавать отдельные функции-тесты, pytest позволяет вам использовать декораторы для определения тестовых функций и параметризованных входных данных․ Это делает код более компактным и легким для поддержки․
Для начала я определил функции-тесты, которые проверяют соответствующие функции sum, mul, div и sub․ Каждая функция-тест содержит одну или несколько проверок․ Как правило, я начинаю с простых проверок, чтобы убедиться, что функция работает правильно, а затем добавляю более сложные сценарии и краевые случаи․
Вот пример тестовых функций⁚
python
import pytest
def test_sum⁚
assert sum(2٫ 3) 5
assert sum(-5٫ 10) 5
assert sum(0, 0) 0
def test_mul⁚
assert mul(2, 3) 6
assert mul(-5, 10) -50
assert mul(0, 10) 0
def test_div⁚
assert div(10, 2) 5
assert div(-10٫ 2) -5
assert div(0٫ 10) 0
def test_sub⁚
assert sub(5٫ 3) 2
assert sub(-5, 10) -15
assert sub(0٫ 0) 0
Как видите, каждая функция-тест содержит одну или несколько проверок с использованием оператора assert․ Это утверждения, которые проверяют, является ли условие истинным․ Если утверждение не выполняется, pytest выдаст сообщение об ошибке, указывающее на место, где условие было нарушено․
Одна из особенностей pytest, которую я особенно полезной нашел, это возможность параметризовать тестовые функции с использованием декоратора @pytest․mark․parametrize․ Например, если вы хотите проверить функцию sum с разными входными значениями, вы можете написать такой код⁚
python
@pytest․mark․parametrize(″a, b, expected_sum″, [
(2, 3, 5),
(-5, 10, 5),
(0, 0, 0)
])
def test_sum_parametrized(a, b, expected_sum)⁚
assert sum(a, b) expected_sum
Таким образом, вы можете определить несколько наборов входных данных и ожидаемых результатов, которые будут автоматически прогоняться в тестовой функции․ Если одно из утверждений не выполняется, вы получите сообщение об ошибке с подробными данными о наборе данных, на котором произошла ошибка․
Удачи вам в написании автотестов с использованием pytest!