15
15
)
16
16
from urllib .parse import urlencode , urlunparse
17
17
18
- from loguru import logger
19
18
from selenium .webdriver import Chrome
20
19
from selenium .webdriver .remote .webdriver import WebDriver
21
20
@@ -61,7 +60,6 @@ class ServerMountPoint(Generic[_Mount, _Server]):
61
60
server : _Server
62
61
63
62
_log_handler : "_LogRecordCaptor"
64
- _loguru_handler_id : int
65
63
66
64
def __init__ (
67
65
self ,
@@ -113,20 +111,28 @@ def assert_logged_exception(
113
111
if clear_after :
114
112
self .log_records .clear ()
115
113
116
- def raise_first_logged_exception (
114
+ def raise_if_logged_exception (
117
115
self ,
116
+ log_level : int = logging .ERROR ,
118
117
exclude_exc_types : Union [Type [Exception ], Tuple [Type [Exception ], ...]] = (),
118
+ clear_after : bool = True ,
119
119
) -> None :
120
120
"""Raise the first logged exception (if any)
121
121
122
122
Args:
123
+ log_level: The level of log to check
123
124
exclude_exc_types: Any exception types to ignore
125
+ clear_after: Whether to clear logs after check
124
126
"""
125
- for record in self ._log_handler .records :
126
- if record .exc_info is not None :
127
- error = record .exc_info [1 ]
128
- if error is not None and not isinstance (error , exclude_exc_types ):
129
- raise error
127
+ try :
128
+ for record in self ._log_handler .records :
129
+ if record .levelno >= log_level and record .exc_info is not None :
130
+ error = record .exc_info [1 ]
131
+ if error is not None and not isinstance (error , exclude_exc_types ):
132
+ raise error
133
+ finally :
134
+ if clear_after :
135
+ self .log_records .clear ()
130
136
131
137
def url (self , path : str = "" , query : Optional [Any ] = None ) -> str :
132
138
return urlunparse (
@@ -143,7 +149,6 @@ def url(self, path: str = "", query: Optional[Any] = None) -> str:
143
149
def __enter__ (self : _Self ) -> _Self :
144
150
self ._log_handler = _LogRecordCaptor ()
145
151
logging .getLogger ().addHandler (self ._log_handler )
146
- self ._loguru_handler_id = logger .add (self ._log_handler , format = "{message}" )
147
152
self .mount , self .server = self ._mount_and_server_constructor ()
148
153
return self
149
154
@@ -154,12 +159,8 @@ def __exit__(
154
159
traceback : Optional [TracebackType ],
155
160
) -> None :
156
161
self .server .stop ()
157
-
158
162
logging .getLogger ().removeHandler (self ._log_handler )
159
- logger .remove (self ._loguru_handler_id )
160
-
161
- self .raise_first_logged_exception ()
162
-
163
+ self .raise_if_logged_exception ()
163
164
return None
164
165
165
166
0 commit comments