diff --git a/arraycontext/pytest.py b/arraycontext/pytest.py
index 33783e604b4fee6dc9a7aff322cd7d9f6a97ad22..e93a8b38bd8528d8719dfe818bd58c56214a3c66 100644
--- a/arraycontext/pytest.py
+++ b/arraycontext/pytest.py
@@ -69,13 +69,6 @@ class PytestPyOpenCLArrayContextFactory:
     def __call__(self) -> ArrayContext:
         raise NotImplementedError
 
-    def __str__(self):
-        return ("<%s for <pyopencl.Device '%s' on '%s'>" %
-                (
-                    self.actx_class.__name__,
-                    self.device.name.strip(),
-                    self.device.platform.name.strip()))
-
 
 class _PytestPyOpenCLArrayContextFactoryWithClass(PytestPyOpenCLArrayContextFactory):
     force_device_scalars = True
@@ -96,6 +89,13 @@ class _PytestPyOpenCLArrayContextFactoryWithClass(PytestPyOpenCLArrayContextFact
                 queue,
                 force_device_scalars=self.force_device_scalars)
 
+    def __str__(self):
+        return ("<%s for <pyopencl.Device '%s' on '%s'>>" %
+                (
+                    self.actx_class.__name__,
+                    self.device.name.strip(),
+                    self.device.platform.name.strip()))
+
 
 class _PytestPyOpenCLArrayContextFactoryWithClassAndHostScalars(
         _PytestPyOpenCLArrayContextFactoryWithClass):
@@ -117,8 +117,13 @@ class _PytestPytatoPyOpenCLArrayContextFactory(
         # On some implementations (notably Intel CPU), holding a reference
         # to a queue does not keep the context alive.
         ctx, queue = self.get_command_queue()
-        return self.actx_class(
-                queue)
+        return self.actx_class(queue)
+
+    def __str__(self):
+        return ("<PytatoPyOpenCLArrayContext for <pyopencl.Device '%s' on '%s'>>" %
+                (
+                    self.device.name.strip(),
+                    self.device.platform.name.strip()))
 
 
 _ARRAY_CONTEXT_FACTORY_REGISTRY: \