diff --git a/src/pytest_checklist/pointer.py b/src/pytest_checklist/pointer.py index a003ab4..245606f 100644 --- a/src/pytest_checklist/pointer.py +++ b/src/pytest_checklist/pointer.py @@ -14,6 +14,9 @@ def resolve_target_pointer(target: Callable[..., Any] | property) -> Pointer: # NOTE: currently only supports functions and properties if isinstance(target, property): + if target.fget is None: + raise ValueError("Property getter must be set") + module = target.fget.__module__ qualname = target.fget.__qualname__ else: diff --git a/tests/test_pointer.py b/tests/test_pointer.py index 7b55f8a..669ec23 100644 --- a/tests/test_pointer.py +++ b/tests/test_pointer.py @@ -1,10 +1,7 @@ import pytest -from pytest_checklist.pointer import ( - resolve_pointer_mark_target, - resolve_target_pointer, - Pointer, -) +from pytest_checklist.pointer import (Pointer, resolve_pointer_mark_target, + resolve_target_pointer) pointer = pytest.mark.pointer @@ -13,6 +10,12 @@ def func_target(): pass +class PropertyTarget: + @property + def property_target(self): + pass + + @pointer(target=resolve_target_pointer) def test_resolve_target_pointer(): @@ -21,6 +24,11 @@ def test_resolve_target_pointer(): "tests.test_pointer.func_target", ) + assert resolve_target_pointer(PropertyTarget.property_target) == Pointer( + PropertyTarget.property_target, + "tests.test_pointer.PropertyTarget.property_target", + ) + @pointer(target=resolve_pointer_mark_target) def test_resolve_pointer_mark_target():