Применение маркеров тестов

Введение в тестирование на Python

Alexander Levin

Data Scientist

Обзор маркеров тестов

  • Случай 1: пропустить тест при выполнении условия
  • Случай 2: тест ожидаемо завершается с ошибкой

  • Маркер теста — тег (метка) теста в библиотеке pytest

  • Позволяет задавать поведение для конкретных тестов, помечая их
Введение в тестирование на Python

Синтаксис маркеров

  • Декоратор — шаблон проектирования в Python, позволяющий добавлять новую функциональность к объекту без изменения его структуры
  • Синтаксис маркеров тестов начинается с декоратора @pytest.mark:
import pytest

def get_length(string):
    return len(string)

# The test marker syntax
@pytest.mark.skip
def test_get_len():
    assert get_length('123') == 3
Введение в тестирование на Python

Маркеры skip и skipif

  • @pytest.mark.skip — когда нужно пропустить тест в любом случае
  • @pytest.mark.skipif — когда нужно пропустить тест при выполнении заданного условия (True)
Введение в тестирование на Python

Пример маркера skip

  • @pytest.mark.skip — когда тест нужно пропускать безусловно.
import pytest
def get_length(string):
    return len(string)

# The skip marker example
@pytest.mark.skip
def test_get_len():
    assert get_length('123') == 3
Введение в тестирование на Python

Пример маркера skip: вывод

  • Вывод при пропущенном тесте:

Пример pytest.mark.skip

Введение в тестирование на Python

Пример маркера skipif

  • @pytest.mark.skipif — когда тест нужно пропустить при выполнении заданного условия (True).
import pytest
def get_length(string):
    return len(string)

# The skipif marker example
@pytest.mark.skipif('2 * 2 == 5')
def test_get_len():
    assert get_length('abc') == 3
Введение в тестирование на Python

Пример маркера skipif: вывод

  • Вывод теста, пропущенного по условию:

Пример pytest.mark.skipif

Введение в тестирование на Python

Маркер xfail

  • @pytest.mark.xfail — когда ожидается, что тест завершится с ошибкой
import pytest

def gen_sequence(n):
    return list(range(1, n+1))

# The xfail marker example
@pytest.mark.xfail
def test_gen_seq():
    assert gen_sequence(-1)
Введение в тестирование на Python

Маркер xfail: вывод

  • Вывод теста с ожидаемой ошибкой:

Пример pytest.mark.xfail

Введение в тестирование на Python

Итоги

Маркер теста:

  • Является атрибутом теста в библиотеке pytest
  • Используется для задания поведения конкретных тестов
  • Синтаксис начинается с @pytest.mark.name_of_the_marker
  • Встроенные реализации в pytest:
    • @pytest.mark.xfail
    • @pytest.mark.skip
    • @pytest.mark.skipif
Введение в тестирование на Python

Давайте потренируемся!

Введение в тестирование на Python

Preparing Video For Download...