def test_unnamed_parameterized_testcase(self): """Test unnamed parameterized test cases. Unnamed parameterized test cases might have non-alphanumeric characters in their test method names. This test ensures xml_reporter handles them correctly. """ class ParameterizedTest(parameterized.TestCase): @parameterized.parameters(('a (b.c)', )) def test_prefix(self, case): self.assertTrue(case.startswith('a')) start_time = 1000 end_time = 1200 result = self._make_result( (start_time, start_time, end_time, end_time)) test = ParameterizedTest(methodName='test_prefix0') result.startTestRun() result.startTest(test) result.addSuccess(test) result.stopTest(test) result.stopTestRun() result.printErrors() run_time = end_time - start_time classname = xml_reporter._escape_xml_attr( unittest.util.strclass(test.__class__)) expected_re = OUTPUT_STRING % { 'suite_name': 'ParameterizedTest', 'tests': 1, 'failures': 0, 'errors': 0, 'run_time': run_time, 'start_time': re.escape(self._iso_timestamp(start_time), ), 'test_name': re.escape('test_prefix0 ('a (b.c)')'), 'classname': classname, 'status': 'run', 'result': 'completed', 'attributes': '', 'message': '' } self._assert_match(expected_re, self.xml_stream.getvalue())
def test_escape_xml(self): self.assertEqual(xml_reporter._escape_xml_attr('"Hi" <\'>\t\r\n'), '"Hi" <'>	
')
def xml_escaped_exception_type(exception_type): return xml_reporter._escape_xml_attr(str(exception_type))