Waarom pytest?
Er zijn meerdere unit test frameworks beschikbaar binnen Python. Ik heb gekozen voor pytest omdat dit het framework is dat Jetbrains noemt in hun documentatie.
Tips
Mijn eerste tip is het scheiden van groepen van unit tests door middel van regions. Mocht je vaak met C# gewerkt hebben zal je dit eerder gezien hebben!
Door tests te groeperen in regions kunnen we ze gezamenlijk inklappen in je IDE. Dit zorgt voor overzicht in bestanden waar veel unit tests in staan! Het creëren van regions kan alsvolgt:
# region empty_message
def test_info_message_is_empty_raises_value_error(self):
with pytest.raises(ValueError):
Logger().info("")
def test_debug_message_is_empty_raises_value_error(self):
with pytest.raises(ValueError):
Logger().debug("")
def test_error_message_is_empty_raises_value_error(self):
with pytest.raises(ValueError):
Logger().error("")
def test_critical_message_is_empty_raises_value_error(self):
with pytest.raises(ValueError):
Logger().critical("")
def test_warning_message_is_empty_raises_value_error(self):
with pytest.raises(ValueError):
Logger().warning("")
# endregion
Hoe te gebruiken?
In dit hoofdstuk geef ik voorbeelden over het schrijven van unit tets in pytest.
Errors / Exceptions
Door pytest context met het with
keyword kan je checken voor errors, zoals ValueError
:
def test_warning_message_is_empty_raises_value_error(self):
with pytest.raises(ValueError):
Logger().warning("")
Wil je checken dat er geen errors zijn kan je gewoon de code uitvoeren zoals het is. Unit tests falen automatisch bij het raisen van errors:
def test_info_message_is_valid(self):
Logger().info('Ik ben een voorbeeld :P')