Застосування маркерів тестів

Вступ до тестування в 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...