Exemple #1
0
class CoverageParser(object):
    def __init__(self):
        self.reader = Reader()

    def parse(self, path: str, file_type: str) -> dict:
        return_val = {'test_val': 0}
        if equals(file_type, 'html'):
            coverage_data = self.reader.read_html_file(path)
            rate = int(coverage_data['html']['body']['div'][2]['table']
                       ['tfoot']['tr']['td'][4]['text'].rstrip('%'))
            return_val['test_val'] = rate
        elif equals(file_type, 'xml'):
            coverage_data = self.reader.read_xml_file(path)
            rate = coverage_data['coverage']['@line-rate'].split('.')[1][:2]
            return_val['test_val'] = int(rate)
        elif equals(file_type, 'json'):
            coverage_data = self.reader.read_json_file(path)
            return_val['test_val'] = int(
                coverage_data['totals']['percent_covered'])
        else:
            colored_print(
                'Sorry, there is no information you can get from this type of file.',
                'orange')
            return_val['test_val'] = -1

        return return_val
Exemple #2
0
class UnittestParser(object):
    def __init__(self):
        self.reader = Reader()

    def parse(self, path: str, file_type: str) -> dict:
        return_val = {
            'success': 0,
            'fail': 0,
            'skip': 0
        }
        if file_type == 'xml':
            xml = self.reader.read_xml_file(path)
            data = xml['testsuites']['testsuite']
            total = int(data['@tests'])
            fail = int(data['@failures']) + int(data['@errors'])
            skip = int(data['@skipped'])
            success = total - fail - skip
            return_val['success'] = success
            return_val['fail'] = fail
            return_val['skip'] = skip
        elif file_type == 'html':
            report_list = glob.glob(path + '/*.html')
            for file in report_list:
                html = self.reader.read_html_file(file)
                data = html['html']['body']['div']['div'][0]['div']['p'][2]['text']
                data = [x.rstrip(',').rstrip(':') for x in data.split()]
                r = {}
                for i in range(0, len(data), 2):
                    r[data[i]] = data[i + 1]
                return_val['success'] += int(r['Pass']) if 'Pass' in r else 0
                return_val['fail'] += int(r['Fail']) if 'Fail' in r else 0
                return_val['skip'] += int(r['Skip']) if 'Skip' in r else 0

        return return_val
Exemple #3
0
class JacocoParser(object):
    def __init__(self):
        self.reader = Reader()

    def parse(self, path: str, file_type: str) -> {str, int}:
        return_val = {'test_val': 0}
        if file_type == 'html':
            html = self.reader.read_html_file(path)
            return_val['test_val'] = int(html['html']['body']['table']['tfoot']
                                         ['tr']['td'][2]['text'].rstrip('%'))
        elif file_type == 'csv':
            # csv = self.reader.read_raw_file(path)
            colored_print(
                'Sorry, there is no information you can get from this type of file.',
                'orange')
            return_val['test_val'] = -1
        elif file_type == 'xml':
            # xml = self.reader.read_xml_file(path)
            return_val['test_val'] = -1

        return return_val