Files
AI/참고/guardrails-main/tests/unit_tests/utils/test_safe_get.py

32 lines
1001 B
Python
Raw Normal View History

2026-05-12 19:40:31 +09:00
import pytest
from guardrails.utils.safe_get import safe_get
@pytest.mark.parametrize(
"container,key,default,expected_value",
[
([1, 2, 3], 1, None, 2),
([1, 2, 3], 4, None, None),
([1, 2, 3], 4, 42, 42),
([1, 2, None], 2, 42, 42),
({"a": 1, "b": 2, "c": 3}, "b", None, 2),
({"a": 1, "b": 2, "c": 3}, "d", None, None),
({"a": 1, "b": 2, "c": 3}, "d", 42, 42),
("123", 1, None, "2"),
("123", 4, None, None),
("123", 4, 42, 42),
# Falsy values must be returned, not replaced by default
([0, "a", "b"], 0, None, 0),
([False, "a"], 0, None, False),
(["", "a"], 0, None, ""),
# Out-of-bounds and non-subscriptable containers use default
([], 0, "fallback", "fallback"),
(None, 0, "fallback", "fallback"),
],
)
def test_safe_get(container, key, default, expected_value):
actual = safe_get(container, key, default)
assert actual == expected_value