class_docstr: Callback that measures the training and testing time of a PyTorch Lightning module.
docstr: Call when the test ends.
  
  Prints the time taken for testing and the throughput in frames per second.
  
  Args:
      trainer (Trainer): PyTorch Lightning trainer.
      pl_module (LightningModule): Current training module.
  
  Returns:
      None
code: def on_test_end(
      self, trainer: Trainer, pl_module: LightningModule
  ) -> None:  # pylint: disable=W0613
      """Call when the test ends.
  
      Prints the time taken for testing and the throughput in frames per second.
  
      Args:
          trainer (Trainer): PyTorch Lightning trainer.
          pl_module (LightningModule): Current training module.
  
      Returns:
          None
      """
      testing_time = time.time() - self.start
      output = f"Testing took {testing_time} seconds\nThroughput "
      if trainer.test_dataloaders is not None:
          output += (
              f"(batch_size={trainer.test_dataloaders[0].batch_size})"
          )
      output += f" : {self.num_images/testing_time} FPS"
      logger.info(output)
  
file_path: anomalib/src/anomalib/utils/callbacks/timer.py
imports: import logging
  import time
  from pytorch_lightning import Callback, LightningModule, Trainer
label_desc: Use image node_id 5 for calling the TimerCallback obj's underlying member method code with example usage: obj.on_test_end(trainer, pl_module) without return types