def setUp(self): self.parser = BoostParser()
class BoostParser_Test(unittest.TestCase): def setUp(self): self.parser = BoostParser() def tearDown(self): del self.parser def testParseData(self): suite = '<TestSuite name="Expression_Solver_Unit_Tests">\ <TestCase name="Compute_Addition_Subtraction">\ <TestingTime>0</TestingTime>\ </TestCase>\ </TestSuite>' data = "<TestLog>%s</TestLog>" % suite xml = ET.fromstring(data) results = self.parser._parseData(xml) self.assertEquals(results.suiteCount(), 1) def testParseSuite(self): name = "Sample_Test_Suite" test = '<TestCase name="Compute_Addition_Subtraction">\ <TestingTime>0</TestingTime>\ </TestCase>' testSuite = '<TestSuite name="%s">%s</TestSuite>' % (name, test) xml = ET.fromstring(testSuite) suite = self.parser._parseSuite(xml) self.assertEqual(suite.name, name) self.assertEqual(suite.testCount(), 1) def testParseTestCase(self): name = "sampleTestCase" file = "main.cpp" line = 10 message = "sample message" error = "sample error" time = 0 testCase = ( '<TestCase name="%(name)s"> \ <Message file="%(file)s" line="%(line)d">%(message)s</Message> \ <Error file="%(file)s" line="%(line)d">%(error)s</Error> \ <TestingTime>%(time)d</TestingTime> \ </TestCase>' % {"name": name, "file": file, "line": line, "message": message, "error": error, "time": time} ) xml = ET.fromstring(testCase) test = self.parser._parseTestCase(xml) self.assertEqual(test.name, name) self.assertEqual(test.timeTaken, time) self.assertEqual(len(test.notices), 2) for notice in test.notices: self.assertEqual(notice.line, line) self.assertEqual(notice.file, file) # check order and type of notices first = test.notices[0] self.assertEqual(first.info, message) second = test.notices[1] self.assertEqual(second.info, error) def test_testcaseFatalError(self): """ Test that parser handles FatalError. @date Jul 17, 2010 """ name = "test_fail" file = "main.cpp" line = 36 time = 0 data = ( '<TestCase name="%(name)s"> \ <FatalError file="%(file)s" line="%(line)d">Test fail</FatalError> \ <TestingTime>%(time)d</TestingTime> \ </TestCase>' % {"name": name, "file": file, "line": line, "time": time} ) xml = ET.fromstring(data) test = self.parser._parseTestCase(xml) self.assertEqual(test.type, "TestCase") self.assertEqual(test.name, name) self.assertEqual(test.timeTaken, time) self.assertEqual(len(test.notices), 1) notice = test.getChildren()[0] self.assertEqual(notice.type, "FatalError") self.assertEqual(notice.file, file) self.assertEqual(notice.line, line) def test_hierarchy(self): """ Test parse with real data. Tests with sub-suites. Checks that correct hierarchy returned. Doesn't test that all the data (names, lines, files, etc.) are correct, as it would complicate the test and its already checked in other tests. """ f = open(computeDataFilepath("./sample/boost.xml", __file__)) results = self.parser.parse(file=f) lvl0 = results.getChildren() self.assertEquals(len(lvl0), 1) self.assertEquals(lvl0[0].type, "Suite") lvl1 = lvl0[0].getChildren() self.assertEquals(len(lvl1), 5) self.assertEquals(lvl1[0].type, "TestCase") self.assertEquals(lvl1[1].type, "TestCase") self.assertEquals(lvl1[2].type, "Suite") lvl2_a = lvl1[2].getChildren() self.assertEquals(len(lvl2_a), 2) self.assertEquals(lvl2_a[0].type, "TestCase") self.assertEquals(lvl2_a[1].type, "TestCase") self.assertEquals(lvl1[3].type, "Suite") lvl2_b = lvl1[3].getChildren() self.assertEquals(len(lvl2_b), 5) self.assertEquals(lvl2_b[0].type, "TestCase") self.assertEquals(lvl2_b[1].type, "TestCase") self.assertEquals(lvl2_b[2].type, "TestCase") self.assertEquals(lvl2_b[3].type, "TestCase") self.assertEquals(lvl2_b[4].type, "Suite") lvl3_a = lvl2_b[4].getChildren() self.assertEquals(len(lvl3_a), 1) self.assertEquals(lvl3_a[0].type, "TestCase") self.assertEquals(lvl1[4].type, "Suite") lvl2_c = lvl1[4].getChildren() self.assertEquals(len(lvl2_c), 2) self.assertEquals(lvl2_c[0].type, "TestCase") self.assertEquals(lvl2_c[1].type, "TestCase")