Skip to content

Commit 37782db

Browse files
committed
add pydantic test without mocks
1 parent 315d853 commit 37782db

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

tests/integrations/pydantic_ai/test_pydantic_ai.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2730,3 +2730,32 @@ async def test_binary_content_in_agent_run(sentry_init, capture_events):
27302730
if "gen_ai.request.messages" in chat_span["data"]:
27312731
messages_str = str(chat_span["data"]["gen_ai.request.messages"])
27322732
assert any(keyword in messages_str for keyword in ["blob", "image", "base64"])
2733+
2734+
@pytest.mark.asyncio
2735+
async def test_set_usage_data_with_cache_tokens(sentry_init, capture_events):
2736+
"""Test that cache_read_tokens and cache_write_tokens are tracked."""
2737+
import sentry_sdk
2738+
from pydantic_ai.usage import RequestUsage
2739+
from sentry_sdk.integrations.pydantic_ai.spans.utils import _set_usage_data
2740+
from sentry_sdk.consts import SPANDATA
2741+
2742+
sentry_init(integrations=[PydanticAIIntegration()], traces_sample_rate=1.0)
2743+
2744+
events = capture_events()
2745+
2746+
with sentry_sdk.start_transaction(op="test", name="test"):
2747+
span = sentry_sdk.start_span(op="test_span")
2748+
usage = RequestUsage(
2749+
input_tokens=100,
2750+
output_tokens=50,
2751+
cache_read_tokens=80,
2752+
cache_write_tokens=20,
2753+
)
2754+
_set_usage_data(span, usage)
2755+
span.finish()
2756+
2757+
(event,) = events
2758+
(span_data,) = event["spans"]
2759+
assert span_data["data"][SPANDATA.GEN_AI_USAGE_INPUT_TOKENS_CACHED] == 80
2760+
assert span_data["data"][SPANDATA.GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE] == 20
2761+

0 commit comments

Comments
 (0)