class_docstr: Tests for CSV decoder.
class_docstr_tok: ["Tests","for","CSV","decoder","."]
code: def test_csv_decoder_invalid_row(self):
      input_lines = ["1,2.0,hello", "5,12.34"]
      column_names = ["int_feature", "float_feature", "str_feature"]
  
      with self.assertRaisesRegex(  # pylint: disable=g-error-prone-assert-raises
          ValueError, ".*Columns do not match specified csv headers.*"
      ):
          with beam.Pipeline() as p:
              result = (
                  p
                  | beam.Create(input_lines, reshuffle=False)
                  | csv_decoder.DecodeCSV(column_names=column_names)
              )
              util.assert_that(
                  result,
                  test_util.make_arrow_record_batches_equal_fn(
                      self, None
                  ),
              )
  
file_path: data-validation/tensorflow_data_validation/coders/csv_decoder_test.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import sys
  from absl.testing import absltest
  from absl.testing import parameterized
  import apache_beam
  from apache_beam.testing import util
  import pyarrow
  from tensorflow_data_validation.coders import csv_decoder
  from tensorflow_data_validation.utils import test_util
  from google.protobuf import text_format
  from tensorflow_metadata.proto.v0 import schema_pb2
label_desc: Use image node_id 2 for calling the CSVDecoderTest obj's underlying member method code with example usage: obj.test_csv_decoder_invalid_row() without return types