d802ddc
diff --git a/tests/test_core.py b/tests/test_core.py
d802ddc
index dd69a96..c666a3a 100644
d802ddc
--- a/tests/test_core.py
d802ddc
+++ b/tests/test_core.py
d802ddc
@@ -389,13 +389,23 @@ def test_unknown_preferredencoding_warned_and_fallback():
d802ddc
     """Ensure a locale without a codec emits a warning."""
d802ddc
     @as_subprocess
d802ddc
     def child():
d802ddc
+        warnings.filterwarnings("error", category=UserWarning)
d802ddc
+        match = ('LookupError: unknown encoding: ---unknown--encoding---, '
d802ddc
+                 'defaulting to UTF-8 for keyboard.')
d802ddc
         with mock.patch('locale.getpreferredencoding') as get_enc:
d802ddc
             get_enc.return_value = '---unknown--encoding---'
d802ddc
-            with pytest.warns(UserWarning, match=(
d802ddc
-                    'LookupError: unknown encoding: ---unknown--encoding---, '
d802ddc
-                    'defaulting to UTF-8 for keyboard.')):
d802ddc
-                t = TestTerminal()
d802ddc
-                assert t._encoding == 'UTF-8'
d802ddc
+            try:
d802ddc
+                TestTerminal()
d802ddc
+            except UserWarning as e:
d802ddc
+                assert match in str(e)
d802ddc
+            else:
d802ddc
+                raise AssertionError('Did not raise warning')
d802ddc
+
d802ddc
+            warnings.filterwarnings("ignore", category=UserWarning)
d802ddc
+            t = TestTerminal()
d802ddc
+            assert t._encoding == 'UTF-8'
d802ddc
+
d802ddc
+        warnings.resetwarnings()
d802ddc
d802ddc
     child()