@@ -444,8 +444,8 @@ def __init__(self, config):
444
444
self .config = config
445
445
446
446
def pytest_runtest_setup (self , item ):
447
- item .qt_log_handler = _QtMessageCapture ()
448
- previous_handler = qInstallMsgHandler (item .qt_log_handler . handle )
447
+ item .qt_log_capture = _QtMessageCapture ()
448
+ previous_handler = qInstallMsgHandler (item .qt_log_capture . _handle )
449
449
item .qt_previous_handler = previous_handler
450
450
451
451
@pytest .mark .hookwrapper
@@ -461,7 +461,7 @@ def pytest_runtest_makereport(self, item, call):
461
461
long_repr = getattr (report , 'longrepr' , None )
462
462
if hasattr (long_repr , 'addsection' ):
463
463
lines = []
464
- for msg_type , msg in item .qt_log_handler .messages :
464
+ for msg_type , msg in item .qt_log_capture .messages :
465
465
msg_name = _QtMessageCapture .get_msg_name (msg_type )
466
466
lines .append ('{0}: {1}' .format (msg_name , msg ))
467
467
if lines :
@@ -470,7 +470,7 @@ def pytest_runtest_makereport(self, item, call):
470
470
# Release the handler resources.
471
471
qInstallMsgHandler (item .qt_previous_handler )
472
472
del item .qt_previous_handler
473
- del item .qt_log_handler
473
+ del item .qt_log_capture
474
474
475
475
476
476
class _QtMessageCapture (object ):
@@ -484,23 +484,37 @@ class _QtMessageCapture(object):
484
484
Message = collections .namedtuple ('Message' , 'msg_type, msg' )
485
485
486
486
def __init__ (self ):
487
- self .messages = []
487
+ self ._messages = []
488
488
489
- def handle (self , msg_type , msg ):
489
+ def _handle (self , msg_type , msg ):
490
490
"""
491
491
Method to be installed using qInstallMsgHandler, stores each message
492
492
into the `messages` attribute.
493
493
"""
494
494
if isinstance (msg , bytes ):
495
495
msg = msg .decode ('utf-8' , errors = 'replace' )
496
- self .messages .append (self .Message (msg_type , msg ))
496
+ self ._messages .append (self .Message (msg_type , msg ))
497
+
498
+ @property
499
+ def messages (self ):
500
+ """Acess messages captured so far.
501
+
502
+ :rtype: list of `Message` namedtuples.
503
+ """
504
+ return self ._messages [:]
497
505
498
506
@classmethod
499
507
def get_msg_name (cls , msg_type ):
500
- """Returns a string representation of the given QtMsgType enum value."""
508
+ """Return a string representation of the given QtMsgType enum value."""
501
509
return {
502
510
QtDebugMsg : 'QtDebugMsg' ,
503
511
QtWarningMsg : 'QtWarningMsg' ,
504
512
QtCriticalMsg : 'QtCriticalMsg' ,
505
513
QtFatalMsg : 'QtFatalMsg' ,
506
514
}[msg_type ]
515
+
516
+
517
+ @pytest .fixture
518
+ def qtlog (request ):
519
+ """Fixture that can access messages captured during testing"""
520
+ return request ._pyfuncitem .qt_log_capture
0 commit comments