11from unittest import mock
22
33import sentry_sdk
4- from sentry_sdk .consts import OP
54
65
76def test_breadcrumbs (sentry_init , capture_events ):
@@ -26,7 +25,7 @@ def test_breadcrumbs(sentry_init, capture_events):
2625 },
2726 }
2827
29- with sentry_sdk .start_transaction (name = "trx-breadcrumbs" ):
28+ with sentry_sdk .start_span (name = "trx-breadcrumbs" ):
3029 sentry_sdk .add_breadcrumb (message = "breadcrumb0" , ** add_breadcrumbs_kwargs )
3130
3231 with sentry_sdk .start_span (name = "span1" , op = "function" ):
@@ -37,41 +36,25 @@ def test_breadcrumbs(sentry_init, capture_events):
3736 message = "breadcrumb2" , ** add_breadcrumbs_kwargs
3837 )
3938
40- # Spans that create breadcrumbs automatically
41- with sentry_sdk .start_span (name = "span3" , op = OP .DB_REDIS ) as span3 :
42- span3 .set_data ("span3_data" , "data on the redis span" )
43- span3 .set_tag ("span3_tag" , "tag on the redis span" )
44-
45- with sentry_sdk .start_span (name = "span4" , op = OP .HTTP_CLIENT ) as span4 :
46- span4 .set_data ("span4_data" , "data on the http.client span" )
47- span4 .set_tag ("span4_tag" , "tag on the http.client span" )
48-
49- with sentry_sdk .start_span (name = "span5" , op = OP .SUBPROCESS ) as span5 :
50- span5 .set_data ("span5_data" , "data on the subprocess span" )
51- span5 .set_tag ("span5_tag" , "tag on the subprocess span" )
52-
53- with sentry_sdk .start_span (name = "span6" , op = "function" ) as span6 :
54- # This data on the span is not added to custom breadcrumbs.
55- # Data from the span is only added to automatic breadcrumbs shown above
56- span6 .set_data ("span6_data" , "data on span6" )
57- span6 .set_tag ("span6_tag" , "tag on the span6" )
39+ with sentry_sdk .start_span (name = "span3" , op = "function" ):
5840 sentry_sdk .add_breadcrumb (
59- message = "breadcrumb6 " , ** add_breadcrumbs_kwargs
41+ message = "breadcrumb3 " , ** add_breadcrumbs_kwargs
6042 )
6143
6244 try :
6345 1 / 0
6446 except ZeroDivisionError as ex :
6547 sentry_sdk .capture_exception (ex )
6648
67- (error ,) = events
49+ assert len (events ) == 2
50+ error = events [0 ]
6851
6952 breadcrumbs = error ["breadcrumbs" ]["values" ]
7053
7154 for crumb in breadcrumbs :
7255 print (crumb )
7356
74- assert len (breadcrumbs ) == 7
57+ assert len (breadcrumbs ) == 4
7558
7659 # Check for my custom breadcrumbs
7760 for i in range (0 , 3 ):
@@ -88,53 +71,16 @@ def test_breadcrumbs(sentry_init, capture_events):
8871 }
8972 assert breadcrumbs [i ]["timestamp" ] == mock .ANY
9073
91- # Check automatic redis breadcrumbs
92- assert breadcrumbs [3 ]["message" ] == "span3 "
93- assert breadcrumbs [3 ]["type" ] == "redis "
94- assert breadcrumbs [3 ]["category" ] == "redis "
95- assert "level" not in breadcrumbs [ 3 ]
96- assert "origin" not in breadcrumbs [ 3 ]
74+ # Check for custom breadcrumbs on span3
75+ assert breadcrumbs [3 ]["message" ] == "breadcrumb3 "
76+ assert breadcrumbs [3 ]["type" ] == "navigation "
77+ assert breadcrumbs [3 ]["category" ] == "unit_tests.breadcrumbs "
78+ assert breadcrumbs [ 3 ][ "level" ] == "fatal"
79+ assert breadcrumbs [ 3 ][ "origin" ] == "unit-tests"
9780 assert breadcrumbs [3 ]["data" ] == {
98- "span3_tag" : "tag on the redis span" ,
99- }
100- assert breadcrumbs [3 ]["timestamp" ] == mock .ANY
101-
102- # Check automatic http.client breadcrumbs
103- assert "message" not in breadcrumbs [4 ]
104- assert breadcrumbs [4 ]["type" ] == "http"
105- assert breadcrumbs [4 ]["category" ] == "httplib"
106- assert "level" not in breadcrumbs [4 ]
107- assert "origin" not in breadcrumbs [4 ]
108- assert breadcrumbs [4 ]["data" ] == {
109- "thread.id" : mock .ANY ,
110- "thread.name" : mock .ANY ,
111- "span4_data" : "data on the http.client span" ,
112- }
113- assert breadcrumbs [4 ]["timestamp" ] == mock .ANY
114-
115- # Check automatic subprocess breadcrumbs
116- assert breadcrumbs [5 ]["message" ] == "span5"
117- assert breadcrumbs [5 ]["type" ] == "subprocess"
118- assert breadcrumbs [5 ]["category" ] == "subprocess"
119- assert "level" not in breadcrumbs [5 ]
120- assert "origin" not in breadcrumbs [5 ]
121- assert breadcrumbs [5 ]["data" ] == {
122- "thread.id" : mock .ANY ,
123- "thread.name" : mock .ANY ,
124- "span5_data" : "data on the subprocess span" ,
125- }
126- assert breadcrumbs [5 ]["timestamp" ] == mock .ANY
127-
128- # Check for custom breadcrumbs on span6
129- assert breadcrumbs [6 ]["message" ] == "breadcrumb6"
130- assert breadcrumbs [6 ]["type" ] == "navigation"
131- assert breadcrumbs [6 ]["category" ] == "unit_tests.breadcrumbs"
132- assert breadcrumbs [6 ]["level" ] == "fatal"
133- assert breadcrumbs [6 ]["origin" ] == "unit-tests"
134- assert breadcrumbs [6 ]["data" ] == {
13581 "string" : "foobar" ,
13682 "number" : 4.2 ,
13783 "array" : [1 , 2 , 3 ],
13884 "dict" : {"foo" : "bar" },
13985 }
140- assert breadcrumbs [6 ]["timestamp" ] == mock .ANY
86+ assert breadcrumbs [3 ]["timestamp" ] == mock .ANY
0 commit comments