Stosowanie markerów testów

Wprowadzenie do testowania w Pythonie

Alexander Levin

Data Scientist

Przegląd markerów testów

  • Przypadek użycia 1: pominięcie testu po spełnieniu warunku
  • Przypadek użycia 2: test oczekiwany jako niepowodzenie

  • Marker testu - etykieta (znacznik) testu w bibliotece pytest

  • Umożliwia określenie zachowania wybranych testów poprzez ich oznaczenie
Wprowadzenie do testowania w Pythonie

Składnia markerów

  • Dekorator - wzorzec projektowy w Pythonie, który pozwala dodać nową funkcjonalność do istniejącego obiektu bez modyfikowania jego struktury
  • Składnia markerów testów zaczyna się od dekoratora @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
Wprowadzenie do testowania w Pythonie

Markery skip i skipif

  • Użyj @pytest.mark.skip - gdy test ma być zawsze pomijany
  • Użyj @pytest.mark.skipif - gdy test ma być pominięty, jeśli warunek jest True
Wprowadzenie do testowania w Pythonie

Przykład markera skip

  • Użyj @pytest.mark.skip - gdy test ma być pomijany bezwarunkowo.
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
Wprowadzenie do testowania w Pythonie

Przykład markera skip: wynik

  • Wynik z pominiętym testem:

Przykład pytest.mark.skip

Wprowadzenie do testowania w Pythonie

Przykład markera skipif

  • Użyj @pytest.mark.skipif - gdy test ma być pominięty, jeśli warunek jest 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
Wprowadzenie do testowania w Pythonie

Przykład markera skipif: wynik

  • Wynik testu pominiętego warunkowo:

Przykład pytest.mark.skipif

Wprowadzenie do testowania w Pythonie

Marker xfail

  • Użyj @pytest.mark.xfail - gdy oczekujesz, że test zakończy się niepowodzeniem
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)
Wprowadzenie do testowania w Pythonie

Marker xfail: wynik

  • Wynik testu, który ma zakończyć się niepowodzeniem:

Przykład pytest.mark.xfail

Wprowadzenie do testowania w Pythonie

Podsumowanie

Marker testu:

  • Jest atrybutem testu w bibliotece pytest
  • Służy do określania zachowania wybranych testów
  • Składnia zaczyna się od @pytest.mark.name_of_the_marker
  • Wbudowane implementacje w pytest:
    • @pytest.mark.xfail
    • @pytest.mark.skip
    • @pytest.mark.skipif
Wprowadzenie do testowania w Pythonie

Czas na ćwiczenia!

Wprowadzenie do testowania w Pythonie

Preparing Video For Download...