Files
AI/참고/guardrails-main/tests/unit_tests/cli/test_validate.py
2026-05-12 19:40:31 +09:00

64 lines
1.8 KiB
Python

from tests.unit_tests.mocks.mock_file import MockFile
def test_validate(mocker):
mock_validate_llm_output = mocker.patch(
"guardrails.cli.validate.validate_llm_output"
)
mock_validate_llm_output.return_value = "validated output"
mock_file = MockFile()
mock_open = mocker.patch("guardrails.cli.validate.open")
mock_open.return_value = mock_file
write_spy = mocker.spy(mock_file, "write")
mock_json_dump = mocker.patch("json.dump")
import builtins
print_spy = mocker.spy(builtins, "print")
from guardrails.cli.validate import validate
response = validate("my_spec.rail", "output", out="somewhere")
mock_validate_llm_output.assert_called_once_with("my_spec.rail", "output")
print_spy.assert_called_once_with("validated output")
mock_open.assert_called_once_with("somewhere", "w")
mock_json_dump.assert_called_once_with("validated output", mock_file)
write_spy.assert_called_once_with("\n")
assert response == "validated output"
def test_validate_llm_output(mocker):
class MockGuard:
def parse(self, *args):
pass
from guardrails import Guard
from guardrails.classes import ValidationOutcome
mock_guard = MockGuard()
for_rail_mock = mocker.patch.object(Guard, "for_rail")
for_rail_mock.return_value = mock_guard
parse_mock = mocker.patch.object(mock_guard, "parse")
parse_mock.return_value = ValidationOutcome(
call_id="mock-call",
raw_llm_output="output",
validated_output="validated output",
validation_passed=True,
)
from guardrails.cli.validate import validate_llm_output
rail = "my_spec.rail"
response = validate_llm_output(rail, "output")
for_rail_mock.assert_called_once_with(rail)
parse_mock.assert_called_once_with("output")
assert response == "validated output"