Použití testovacích markerů

Úvod do testování v Pythonu

Alexander Levin

Data Scientist

Přehled testovacích markerů

  • Případ použití 1: přeskočit test při splnění podmínky
  • Případ použití 2: test, u kterého se očekává selhání

  • Testovací marker – značka (marker) testu v knihovně pytest

  • Umožňuje označením testů určit jejich konkrétní chování
Úvod do testování v Pythonu

Syntaxe markerů

  • Dekorátor – návrhový vzor v Pythonu, který umožňuje přidat novou funkcionalitu existujícímu objektu bez změny jeho struktury
  • Syntaxe testovacích markerů začíná dekorátorem @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
Úvod do testování v Pythonu

Markery skip a skipif

  • Použijte @pytest.mark.skip – pokud chcete test vždy přeskočit
  • Použijte @pytest.mark.skipif – pokud chcete test přeskočit při splnění podmínky (True)
Úvod do testování v Pythonu

Příklad markeru skip

  • Použijte @pytest.mark.skip – pokud chcete test přeskočit vždy.
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
Úvod do testování v Pythonu

Příklad markeru skip: výstup

  • Výstup s přeskočeným testem:

Příklad pytest.mark.skip

Úvod do testování v Pythonu

Příklad markeru skipif

  • Použijte @pytest.mark.skipif – pokud chcete test přeskočit při splnění podmínky (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
Úvod do testování v Pythonu

Příklad markeru skipif: výstup

  • Výstup podmíněně přeskočeného testu:

Příklad pytest.mark.skipif

Úvod do testování v Pythonu

Marker xfail

  • Použijte @pytest.mark.xfail – pokud očekáváte, že test selže
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)
Úvod do testování v Pythonu

Marker xfail: výstup

  • Výstup testu, u kterého se očekává selhání:

Příklad pytest.mark.xfail

Úvod do testování v Pythonu

Shrnutí

Testovací marker:

  • Je atributem testu v knihovně pytest
  • Slouží k určení chování konkrétních testů
  • Jeho syntaxe začíná @pytest.mark.název_markeru
  • Vestavěné implementace v pytest:
    • @pytest.mark.xfail
    • @pytest.mark.skip
    • @pytest.mark.skipif
Úvod do testování v Pythonu

Pojďme si procvičit!

Úvod do testování v Pythonu

Preparing Video For Download...