Hypothese: Defensive Programmierung testen
Posted: 06 Jan 2025, 05:01
Ich schreibe Tests mit Hypothesis, um Funktionen mit eingeschränktem Bereich zu testen. Betrachten Sie das folgende Spielzeugbeispiel:
Hier teste ich das Verhalten für endliche und unendliche Eingaben, aber nicht für NaN. Ich möchte testen, ob Werte außerhalb des Bereichs, wie z. B. NaN, korrekt einen AssertionError auslösen.
Gibt es in Hypothesis ein integriertes Muster, mit dem ich dies testen kann? Idealerweise würde ich einen Ansatz bevorzugen, bei dem ich die Abdeckung von Werten innerhalb des Bereichs nicht gefährde.
Code: Select all
import math
from hypothesis import assume, example, given
def inc(value: float) -> float:
assert not math.isnan(value)
return value + 1
@given(st.floats())
def test_inc(value: float):
assume(not math.isnan(value))
if(value == math.inf or value == -math.inf):
assert inc(value) == value
else:
assert inc(value) > value
Gibt es in Hypothesis ein integriertes Muster, mit dem ich dies testen kann? Idealerweise würde ich einen Ansatz bevorzugen, bei dem ich die Abdeckung von Werten innerhalb des Bereichs nicht gefährde.