Issue #23375: Fix test_py3kwarn for modules implemented in C

Don't check if importing a module emits a DeprecationWarning if the module is
implemented in C and the module is already loaded.
diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py
index 5aee6a5..b4e4e9d 100644
--- a/Lib/test/test_py3kwarn.py
+++ b/Lib/test/test_py3kwarn.py
@@ -2,6 +2,7 @@
 import sys
 from test.test_support import check_py3k_warnings, CleanImport, run_unittest
 import warnings
+from test import test_support
 
 if not sys.py3kwarning:
     raise unittest.SkipTest('%s must be run with the -3 flag' % __name__)
@@ -356,6 +357,21 @@
     def check_removal(self, module_name, optional=False):
         """Make sure the specified module, when imported, raises a
         DeprecationWarning and specifies itself in the message."""
+        if module_name in sys.modules:
+            mod = sys.modules[module_name]
+            filename = getattr(mod, '__file__', '')
+            mod = None
+            # the module is not implemented in C?
+            if not filename.endswith(('.py', '.pyc', '.pyo')):
+                # Issue #23375: If the module was already loaded, reimporting
+                # the module will not emit again the warning. The warning is
+                # emited when the module is loaded, but C modules cannot
+                # unloaded.
+                if test_support.verbose:
+                    print("Cannot test the Python 3 DeprecationWarning of the "
+                          "%s module, the C module is already loaded"
+                          % module_name)
+                return
         with CleanImport(module_name), warnings.catch_warnings():
             warnings.filterwarnings("error", ".+ (module|package) .+ removed",
                                     DeprecationWarning, __name__)