@@ -284,3 +284,25 @@ def test(run):
284
284
''' )
285
285
result = testdir .runpytest ()
286
286
result .stdout .fnmatch_lines (['*2 passed in*' ])
287
+
288
+ def test_match_regex (self ):
289
+ with pytest .warns (UserWarning , match = r'must be \d+$' ):
290
+ warnings .warn ("value must be 42" , UserWarning )
291
+
292
+ with pytest .raises (AssertionError , match = 'pattern not found' ):
293
+ with pytest .warns (UserWarning , match = r'must be \d+$' ):
294
+ warnings .warn ("this is not here" , UserWarning )
295
+
296
+ def test_one_from_multiple_warns ():
297
+ with warns (UserWarning , match = r'aaa' ):
298
+ warnings .warn ("cccccccccc" , UserWarning )
299
+ warnings .warn ("bbbbbbbbbb" , UserWarning )
300
+ warnings .warn ("aaaaaaaaaa" , UserWarning )
301
+
302
+ def test_none_of_multiple_warns ():
303
+ a , b , c = ('aaa' , 'bbbbbbbbbb' , 'cccccccccc' )
304
+ expected_msg = "'{}' pattern not found in \['{}', '{}'\]" .format (a , b , c )
305
+ with raises (AssertionError , match = expected_msg ):
306
+ with warns (UserWarning , match = r'aaa' ):
307
+ warnings .warn ("bbbbbbbbbb" , UserWarning )
308
+ warnings .warn ("cccccccccc" , UserWarning )
0 commit comments