Add `messages` property to `caplog` fixture.
This commit is contained in:
		
							parent
							
								
									94c41bec64
								
							
						
					
					
						commit
						3615977608
					
				
							
								
								
									
										1
									
								
								AUTHORS
								
								
								
								
							
							
						
						
									
										1
									
								
								AUTHORS
								
								
								
								
							|  | @ -204,6 +204,7 @@ Victor Uriarte | ||||||
| Vidar T. Fauske | Vidar T. Fauske | ||||||
| Vitaly Lashmanov | Vitaly Lashmanov | ||||||
| Vlad Dragos | Vlad Dragos | ||||||
|  | Wil Cooley | ||||||
| William Lee | William Lee | ||||||
| Wouter van Ackooy | Wouter van Ackooy | ||||||
| Xuan Luong | Xuan Luong | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | Fixture ``caplog`` now has a ``messages`` property, providing convenient access to the format-interpolated log messages without the extra data provided by the formatter/handler. | ||||||
|  | @ -270,6 +270,22 @@ class LogCaptureFixture(object): | ||||||
|         """ |         """ | ||||||
|         return [(r.name, r.levelno, r.getMessage()) for r in self.records] |         return [(r.name, r.levelno, r.getMessage()) for r in self.records] | ||||||
| 
 | 
 | ||||||
|  |     @property | ||||||
|  |     def messages(self): | ||||||
|  |         """Returns a list of format-interpolated log messages. | ||||||
|  | 
 | ||||||
|  |         Unlike 'records', which contains the format string and parameters for interpolation, log messages in this list | ||||||
|  |         are all interpolated. | ||||||
|  |         Unlike 'text', which contains the output from the handler, log messages in this list are unadorned with | ||||||
|  |         levels, timestamps, etc, making exact comparisions more reliable. | ||||||
|  | 
 | ||||||
|  |         Note that traceback or stack info (from :func:`logging.exception` or the `exc_info` or `stack_info` arguments | ||||||
|  |         to the logging functions) is not included, as this is added by the formatter in the handler. | ||||||
|  | 
 | ||||||
|  |         .. versionadded:: 3.7 | ||||||
|  |         """ | ||||||
|  |         return [r.getMessage() for r in self.records] | ||||||
|  | 
 | ||||||
|     def clear(self): |     def clear(self): | ||||||
|         """Reset the list of log records and the captured log text.""" |         """Reset the list of log records and the captured log text.""" | ||||||
|         self.handler.reset() |         self.handler.reset() | ||||||
|  |  | ||||||
|  | @ -73,6 +73,27 @@ def test_log_access(caplog): | ||||||
|     assert "boo arg" in caplog.text |     assert "boo arg" in caplog.text | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def test_messages(caplog): | ||||||
|  |     caplog.set_level(logging.INFO) | ||||||
|  |     logger.info("boo %s", "arg") | ||||||
|  |     logger.info("bar %s\nbaz %s", "arg1", "arg2") | ||||||
|  |     assert "boo arg" == caplog.messages[0] | ||||||
|  |     assert "bar arg1\nbaz arg2" == caplog.messages[1] | ||||||
|  |     assert caplog.text.count("\n") > len(caplog.messages) | ||||||
|  |     assert len(caplog.text.splitlines()) > len(caplog.messages) | ||||||
|  | 
 | ||||||
|  |     try: | ||||||
|  |         raise Exception("test") | ||||||
|  |     except Exception: | ||||||
|  |         logger.exception("oops") | ||||||
|  | 
 | ||||||
|  |     assert "oops" in caplog.text | ||||||
|  |     assert "oops" in caplog.messages[-1] | ||||||
|  |     # Tracebacks are stored in the record and not added until the formatter or handler. | ||||||
|  |     assert "Exception" in caplog.text | ||||||
|  |     assert "Exception" not in caplog.messages[-1] | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def test_record_tuples(caplog): | def test_record_tuples(caplog): | ||||||
|     caplog.set_level(logging.INFO) |     caplog.set_level(logging.INFO) | ||||||
|     logger.info("boo %s", "arg") |     logger.info("boo %s", "arg") | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue