code: def test_OccurancePunctuationErrorRate(self):
      oper_obj = OccurancePunctuationErrorRate(self.punctuation_marks)
      (
          operation_amounts,
          substitution_amounts,
          punctuation_rates,
      ) = oper_obj.compute(self.reference, self.hypothesis)
  
      assert operation_amounts == self.operation_amounts
      assert substitution_amounts == self.substitution_amounts
      assert punctuation_rates.correct_rate == self.correct_rate
      assert punctuation_rates.deletions_rate == self.deletions_rate
      assert punctuation_rates.insertions_rate == self.insertions_rate
      assert (
          punctuation_rates.substitutions_rate
          == self.substitutions_rate
      )
      assert punctuation_rates.punct_er == self.punct_er
      assert punctuation_rates.operation_rates == self.operation_rates
      assert (
          punctuation_rates.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 2 for calling the TestPunctuationErrorRate obj's underlying member method code with example usage: obj.test_OccurancePunctuationErrorRate() without return types