Wpis z mikrobloga

#python #programowanie

Szanowne Mireczki! Mam pytanie dotyczące unittestów oraz logowania za pomocą modułu logging.

Mam sobie klasę, nazwijmy ją MirClass. Ta klasa ma zrobionego loggera:

logging.basicConfig(level=logging.DEBUG, format="[%(name)s] [%(levelname)8s] - %(message)s")

self.logger = logging.getLogger(_name_)


Do przetestowania mam metodę, która wysyła loga (np. self.logger.info("No elo")), gdy wykona się jakiś event (np. ruch myszką).

I tutaj mam pytanko - jak zrobić unittest, który nasł#!$%@? logów? Jak można obserwować logi z osobnego loggera i odpowiednio "reagować" na jakiś napotkany log?

Pozdrawiam serdecznie!
  • 7
via Wykop Mobilny (Android)
  • 0
@ProfesorBigos: hmmm... Tylko zastanawiam się jak to zrobić. To może powiem więcej. Temat jest związany z CV (OpenCV + GStreamer). Moja klasa ma obsługiwać kod stworzony przez kolegów, jednocześnie nasł#!$%@?ąc eventy z GStreamera.

Mój cel jest taki, by zrobić test, że jak na obrazie pojawi się porządany obiekt to wtedy mam przechwycić logi z GStreamera.

Także dumam i dumam ()
@SuperStefan: Jednak skłaniam się w stronę tego ze ten kod jest złe zaprojektowany. Unit test nie powinien nigdy się opierać o system plików. Wystarczy ze będziesz miał niska wartość ulimit albo maszyna biuldowa będzie odpala dużo procesów i test Ci się wywali.
@SuperStefan: najładniej jest przekazać logger w konstruktorze w czasie tworzena MirClass (to tak zwane Dependency Injection). Dzięki temu twoja klasa nie wie, gdzie loguje: loggerem może być jakiś logger do pliku, standardowy, albo taki, który możesz sobie zamockować w testach.

Ziąą z teamu obok dał mi sugestię, by zapisywać logi do pliku, a potem na ich podstawie wyczytać czy oczekiwany event został zalogowany


@SuperStefan: super porada (