Använda testmarkörer

Introduktion till testning i Python

Alexander Levin

Data Scientist

Översikt av testmarkörer

  • Användningsfall 1: hoppa över testet om villkoret uppfylls
  • Användningsfall 2: testet förväntas misslyckas

  • Testmarkör – en tagg (markör) för ett test i biblioteket pytest

  • Gör det möjligt att styra beteendet för enskilda tester genom att tagga dem
Introduktion till testning i Python

Markörernas syntax

  • Dekoratör – ett designmönster i Python som låter dig lägga till ny funktionalitet till ett befintligt objekt utan att ändra dess struktur
  • Syntaxen för testmarkörer inleds med dekoratören @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
Introduktion till testning i Python

Markörerna skip och skipif

  • Använd @pytest.mark.skip – när du alltid vill hoppa över ett test
  • Använd @pytest.mark.skipif – när du vill hoppa över ett test om ett givet villkor är True
Introduktion till testning i Python

Exempel: skip-markören

  • Använd @pytest.mark.skip – när du vill hoppa över ett test utan undantag.
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
Introduktion till testning i Python

Exempel: skip-markörens utdata

  • Utdata med ett överhoppat test:

pytest.mark.skip example

Introduktion till testning i Python

Exempel: skipif-markören

  • Använd @pytest.mark.skipif – när du vill hoppa över ett test om det givna villkoret är 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
Introduktion till testning i Python

Exempel: skipif-markörens utdata

  • Utdata för ett villkorligt överhoppat test:

pytest.mark.skipif example

Introduktion till testning i Python

Xfail-markören

  • Använd @pytest.mark.xfail – när du förväntar dig att ett test ska misslyckas
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)
Introduktion till testning i Python

Xfail-markören: utdata

  • Utdata för ett test som förväntas misslyckas:

pytest.mark.xfail example

Introduktion till testning i Python

Sammanfattning

Testmarkör:

  • Är ett attribut för ett test i biblioteket pytest
  • Används för att styra beteendet för enskilda tester
  • Har en syntax som inleds med @pytest.mark.name_of_the_marker
  • Inbyggda implementationer i pytest:
    • @pytest.mark.xfail
    • @pytest.mark.skip
    • @pytest.mark.skipif
Introduktion till testning i Python

Nu kör vi en övning!

Introduktion till testning i Python

Preparing Video For Download...