40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import warnings
 | |
| 
 | |
| import pytest
 | |
| 
 | |
| from pandas.util._exceptions import rewrite_warning
 | |
| 
 | |
| import pandas._testing as tm
 | |
| 
 | |
| 
 | |
| @pytest.mark.parametrize(
 | |
|     "target_category, target_message, hit",
 | |
|     [
 | |
|         (FutureWarning, "Target message", True),
 | |
|         (FutureWarning, "Target", True),
 | |
|         (FutureWarning, "get mess", True),
 | |
|         (FutureWarning, "Missed message", False),
 | |
|         (DeprecationWarning, "Target message", False),
 | |
|     ],
 | |
| )
 | |
| @pytest.mark.parametrize(
 | |
|     "new_category",
 | |
|     [
 | |
|         None,
 | |
|         DeprecationWarning,
 | |
|     ],
 | |
| )
 | |
| def test_rewrite_warning(target_category, target_message, hit, new_category):
 | |
|     new_message = "Rewritten message"
 | |
|     if hit:
 | |
|         expected_category = new_category if new_category else target_category
 | |
|         expected_message = new_message
 | |
|     else:
 | |
|         expected_category = FutureWarning
 | |
|         expected_message = "Target message"
 | |
|     with tm.assert_produces_warning(expected_category, match=expected_message):
 | |
|         with rewrite_warning(
 | |
|             target_message, target_category, new_message, new_category
 | |
|         ):
 | |
|             warnings.warn(message="Target message", category=FutureWarning)
 |