Skip to content

Commit 01920eb

Browse files
committed
parametrize test to cover more cases
1 parent a8931d2 commit 01920eb

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

packages/service-library/tests/fastapi/test_tracing.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010

1111
import pip
1212
import pytest
13-
from fastapi import FastAPI, status
13+
from fastapi import FastAPI
1414
from fastapi.exceptions import HTTPException
15-
from fastapi.responses import JSONResponse, PlainTextResponse
15+
from fastapi.responses import PlainTextResponse
1616
from fastapi.testclient import TestClient
1717
from opentelemetry import trace
1818
from opentelemetry.sdk.trace.export.in_memory_span_exporter import InMemorySpanExporter
@@ -237,34 +237,44 @@ async def handler(handler_data: dict):
237237
],
238238
indirect=True,
239239
)
240+
@pytest.mark.parametrize(
241+
"server_response",
242+
[
243+
PlainTextResponse("ok"),
244+
HTTPException(status_code=400, detail="error"),
245+
],
246+
)
240247
async def test_with_profile_span(
241248
mock_otel_collector: InMemorySpanExporter,
242249
mocked_app: FastAPI,
243250
set_and_clean_settings_env_vars: Callable[[], None],
244251
tracing_settings_in: Callable,
252+
server_response: PlainTextResponse | HTTPException,
245253
):
246254
tracing_settings = TracingSettings()
247255

256+
handler_data = dict()
257+
248258
@with_profiled_span
249-
async def handler():
259+
async def handler(handler_data: dict):
250260
current_span = trace.get_current_span()
251-
return JSONResponse(
252-
content={
253-
"trace_id": f"{format(current_span.get_span_context().trace_id, '032x')}"
254-
},
261+
handler_data[_OSPARC_TRACE_ID_HEADER] = format(
262+
current_span.get_span_context().trace_id, "032x"
255263
)
264+
if isinstance(server_response, HTTPException):
265+
raise server_response
266+
return server_response
256267

257-
mocked_app.get("/")(handler)
268+
mocked_app.get("/")(partial(handler, handler_data))
258269

259270
async for _ in get_tracing_instrumentation_lifespan(
260271
tracing_settings=tracing_settings,
261272
service_name="Mock-OpenTelemetry-Pytest",
262273
)(app=mocked_app):
263274
initialize_fastapi_app_tracing(mocked_app, add_response_trace_id_header=True)
264275
client = TestClient(mocked_app)
265-
response = client.get("/")
266-
assert response.status_code == status.HTTP_200_OK
267-
trace_id = response.json().get("trace_id")
276+
_ = client.get("/")
277+
trace_id = handler_data.get(_OSPARC_TRACE_ID_HEADER)
268278
assert trace_id is not None
269279

270280
spans = mock_otel_collector.get_finished_spans()

0 commit comments

Comments
 (0)