code: def _test_logging(self, history, lrs=None):
      if lrs is None:
          lrs = [BaseCSVLoggerTest.lr]
      calls = []
      for h in history:
          calls.append(
              call(
                  "loss",
                  {"loss": h["loss"], "val_loss": h["val_loss"]},
                  h["epoch"],
              )
          )
          if len(lrs) == 1:
              calls.append(call("lr", {"lr": self.lr}, h["epoch"]))
          else:
              calls.append(
                  call(
                      "lr",
                      {f"lr_group_{i}": lr for i, lr in enumerate(lrs)},
                      h["epoch"],
                  )
              )
      self.writer.add_scalars.assert_has_calls(calls, any_order=True)
  
imports: import csv
  import os
  from tempfile import TemporaryDirectory
  from unittest import TestCase, main, skipIf
  from unittest.mock import MagicMock, call
  import torch
  import torch.nn
  from tests.framework.tools import some_data_generator
  from poutyne import AtomicCSVLogger, Callback
  from poutyne import CSVLogger
  from poutyne import Model, TensorBoardLogger
label_desc: Use image node_id 5 for calling the BaseTensorBoardLoggerTest obj's underlying member method code with example usage: obj._test_logging(history, lrs) without return types