code: def _test_saving_models(self, pytorch_run):
      best_model_path = pytorch_run[
          "custom_prefix/model/best_model_path"
      ].fetch()
      assert re.match(
          r".*my_model/checkpoints/epoch=.*-valid/loss=.*\.ckpt$",
          best_model_path,
      )
      assert (
          pytorch_run["custom_prefix/model/best_model_score"].fetch()
          is not None
      )
  
      # make sure that exactly `save_top_k` checkpoints
      # NOTE: when `max_epochs` is close to `save_top_k` there may be less than `save_top_k` saved models
      checkpoints = pytorch_run[
          "custom_prefix/model/checkpoints"
      ].fetch()
      assert all(
          (
              checkpoint.startswith("epoch=")
              for checkpoint in checkpoints
          )
      )
      assert len(checkpoints) == 2
  
imports: import os
  import re
  import pytest
  import pytorch_lightning
  import torch
  from pytorch_lightning import LightningModule, Trainer
  from pytorch_lightning.callbacks import ModelCheckpoint
  from pytorch_lightning.loggers.neptune import NeptuneLogger
  from torch.utils.data import DataLoader, Dataset
  import neptune
  from tests.e2e.base import BaseE2ETest
label_desc: Use image node_id 4 for calling the TestPytorchLightning obj's underlying member method code with example usage: obj._test_saving_models(pytorch_run) without return types