[tests,dependencies] capture logs with help from structlog and forget about logot

Closes 
This commit is contained in:
bronsen 2025-03-17 17:52:49 +01:00
parent 6de8b07d1b
commit bcf6dff1b0
5 changed files with 34 additions and 16 deletions

View file

@ -1,9 +1,11 @@
from typing import Callable
import pytest
from django.test import Client
from django.urls import reverse
from hypothesis import given, strategies as st
from logot import Logot, logged
from hypothesis import given
from hypothesis import strategies as st
from structlog.testing import capture_logs
from .models import Teil
@ -56,16 +58,35 @@ def test_enter_endpoint_accepts_only_post_requests(
assert response.status_code == expected_status
@pytest.mark.xfail(reason="WIP, kein Plan warum nichts gecaptured zu werden scheint")
def test_enter_endpoints_emits_expected_logs(
client: Client, logot: Logot, random_name: Callable[[int], str]
client: Client, random_name: Callable[[int], str]
):
"""
note: capture_logs() yields a list of dicts, not a list of logfmt lines
that we configured for the app
"""
same_name = random_name(10)
response = client.post(reverse("collector:enter"), data={"new_name": same_name})
assert response.status_code == 302
logot.assert_logged(logged.info("New Teil entered"))
with capture_logs() as logs:
response = client.post(reverse("collector:enter"), data={"new_name": same_name})
assert response.status_code == 302
assert any(
(
le["event"].lower() == "New Teil entered".lower()
and le["log_level"].lower() == "info"
and "teil_id" in le
for le in logs
)
)
response = client.post(reverse("collector:enter"), data={"new_name": same_name})
assert response.status_code == 302
logot.assert_logged(logged.warning("Teil already existed"))
with capture_logs() as logs:
response = client.post(reverse("collector:enter"), data={"new_name": same_name})
assert response.status_code == 302
assert any(
(
le["event"].lower() == "Teil already existed".lower()
and le["log_level"].lower() == "warning"
and "teil_id" not in le
for le in logs
)
)

View file

@ -23,7 +23,6 @@ addopts = [
"--no-migrations",
"--capture=sys",
]
logot_capturer = "logot.structlog.StructlogCapturer"
[build-system]
requires = ["pdm-backend"]

View file

@ -1,4 +1,4 @@
# SHA1:48c3af154036b224a6b21f175ea0a949febaf6f5
# SHA1:d8e7f5aef64e2e1e161d339a9c1c53d42cdd0981
#
# This file is autogenerated by pip-compile-multi
# To update, run:

View file

@ -3,4 +3,3 @@
hypothesis[django]
pytest
pytest-django
logot[pytest,structlog]

View file

@ -1,4 +1,4 @@
# SHA1:40e4b481355fc16525f8944d39904264b6e382a6
# SHA1:9bf147356ad56dbe073ef0973141bdfb94631c9b
#
# This file is autogenerated by pip-compile-multi
# To update, run:
@ -7,9 +7,8 @@
#
-r prod.txt
attrs==25.3.0
hypothesis==6.129.2
hypothesis==6.129.3
iniconfig==2.0.0
logot==1.3.0
packaging==24.2
pluggy==1.5.0
pytest==8.3.5