code: def test_DatasetPunctuationErrorRate(self):
      dper_obj = DatasetPunctuationErrorRate(
          [self.reference], [self.hypothesis], self.punctuation_marks
      )
      dper_obj.compute()
  
      assert dper_obj.correct_rate == self.correct_rate
      assert dper_obj.deletions_rate == self.deletions_rate
      assert dper_obj.insertions_rate == self.insertions_rate
      assert dper_obj.substitutions_rate == self.substitutions_rate
      assert dper_obj.punct_er == self.punct_er
      assert dper_obj.operation_rates == self.operation_rates
      assert dper_obj.substitution_rates == self.substitution_rates
  
imports: import pytest
  import torch
  from nemo.collections.common.metrics.classification_accuracy import TopKClassificationAccuracy
  from nemo.collections.common.metrics.punct_er import DatasetPunctuationErrorRate, OccurancePunctuationErrorRate, punctuation_error_rate
  from .loss_inputs import ALL_NUM_MEASUREMENTS_ARE_ZERO, NO_ZERO_NUM_MEASUREMENTS, SOME_NUM_MEASUREMENTS_ARE_ZERO
  from .perplexity_inputs import NO_PROBS_NO_LOGITS, ONLY_LOGITS1, ONLY_LOGITS100, ONLY_PROBS, PROBS_AND_LOGITS
  from .pl_utils import LossTester, PerplexityTester
label_desc: Use image node_id 3 for calling the TestPunctuationErrorRate obj's underlying member method code with example usage: obj.test_DatasetPunctuationErrorRate() without return types