Ejemplo n.º 1
0
 def test_rpa(self):
     rpa_false = GOLDEN_XML
     self._validate_rpa(ExecutionResult(StringIO(rpa_false)), False)
     self._validate_rpa(ExecutionResult(StringIO(rpa_false), rpa=True), True)
     rpa_true = GOLDEN_XML.replace('rpa="false"', 'rpa="true"')
     self._validate_rpa(ExecutionResult(StringIO(rpa_true)), True)
     self._validate_rpa(ExecutionResult(StringIO(rpa_true), rpa=False), False)
Ejemplo n.º 2
0
 def setUp(self):
     self.result = """
     <robot>
         <suite name="foo">
             <test name="some name">
                 <status status="PASS"></status>
             </test>
         <status status="PASS"></status>
         </suite>
     </robot>
     """
     self.string_result = ExecutionResult(self.result)
     self.byte_string_result = ExecutionResult(self.result.encode('UTF-8'))
Ejemplo n.º 3
0
 def test_already_processed(self):
     inp = SUITE_TEARDOWN_FAILED.replace('generator="Robot', 'generator="Rebot')
     tc1, tc2 = ExecutionResult(StringIO(inp)).suite.tests
     assert_equals(tc1.status, 'PASS')
     assert_equals(tc1.message, '')
     assert_equals(tc2.status, 'FAIL')
     assert_equals(tc2.message, 'Message')
Ejemplo n.º 4
0
 def setUp(self):
     result = ExecutionResult(StringIO(GOLDEN_XML),
                              StringIO(GOLDEN_XML),
                              StringIO(GOLDEN_XML),
                              merge=True)
     self.suite = result.suite
     self.test = self.suite.tests[0]
Ejemplo n.º 5
0
def process_file(inpath, outpath, items):
    suite = ExecutionResult(inpath).suite
    with open(outpath, 'w', newline='') as outfile:
        writer = csv.writer(outfile, delimiter=';')
        writer.writerow(['TYPE', 'NAME', 'STATUS', 'START', 'END', 'ELAPSED',
                         'ELAPSED SECS'])
        process_suite(suite, writer, items.lower())
Ejemplo n.º 6
0
 def test_with_increasing_cut_from_end(self):
     input = open(os.path.join('test', 'orig-output.xml')).read()
     while len(input) > 250:
         input = input[:-10]
         fixxxed = fixml.Fixxxer(input)
         suite = ExecutionResult(str(fixxxed)).suite
         assert_equals(suite.name, 'Suite')
Ejemplo n.º 7
0
 def result(self):
     if self._result is None:
         self._result = ExecutionResult(*self._data_sources)
         self._result.configure(self._settings.status_rc,
                                self._settings.suite_config,
                                self._settings.statistics_config)
         self.return_code = self._result.return_code
     return self._result
Ejemplo n.º 8
0
def process_file(inpath, outpath, items):
    suite = ExecutionResult(inpath).suite
    outfile = open(outpath, 'wb')
    writer = csv.writer(outfile)
    writer.writerow(['TYPE', 'NAME', 'STATUS', 'START', 'END', 'ELAPSED',
                     'ELAPSED SECS'])
    process_suite(suite, writer, items.lower())
    outfile.close()
Ejemplo n.º 9
0
 def setUp(self):
     result = ExecutionResult(StringIO(GOLDEN_XML))
     self._suite = result.suite
     self._test = self._suite.tests[0]
     self._keyword = self._test.keywords[0]
     self._user_keyword = self._test.keywords[1]
     self._message = self._keyword.messages[0]
     self._setup = self._suite.keywords[0]
     self._errors = result.errors
Ejemplo n.º 10
0
 def setUp(self):
     self.result = ExecutionResult(StringIO(GOLDEN_XML))
     self.suite = self.result.suite
     self.test = self.suite.tests[0]
     self.keyword = self.test.keywords[0]
     self.user_keyword = self.test.keywords[1]
     self.message = self.keyword.messages[0]
     self.setup = self.suite.keywords[0]
     self.errors = self.result.errors
Ejemplo n.º 11
0
 def test_already_processed(self):
     inp = SUITE_TEARDOWN_FAILED.replace('generator="Robot', 'generator="Rebot')
     passed, failed, teardowns = ExecutionResult(StringIO(inp)).suite.tests
     assert_equal(passed.status, 'PASS')
     assert_equal(passed.message, '')
     assert_equal(failed.status, 'FAIL')
     assert_equal(failed.message, 'Message')
     assert_equal(teardowns.status, 'PASS')
     assert_equal(teardowns.message, '')
Ejemplo n.º 12
0
 def test_save(self):
     temp = os.getenv('TEMPDIR', tempfile.gettempdir())
     path = Path(temp) / 'pathlib.xml'
     self.result.save(path)
     try:
         result = ExecutionResult(path)
     finally:
         path.unlink()
     self.test_suite_is_built(result.suite)
     self.test_test_is_built(result.suite)
Ejemplo n.º 13
0
 def test_suite_message(self):
     xml = """
     <robot>
     <suite name="foo">
       <status status="FAIL">Setup failed</status>
     </suite>
     </robot>
     """
     suite = ExecutionResult(StringIO(xml)).suite
     assert_equal(suite.message, 'Setup failed')
Ejemplo n.º 14
0
 def result(self):
     if self._result is None:
         include_keywords = bool(self._settings.log
                                 or self._settings.output)
         self._result = ExecutionResult(include_keywords=include_keywords,
                                        *self._sources)
         self._result.configure(self._settings.status_rc,
                                self._settings.suite_config,
                                self._settings.statistics_config)
         self.return_code = self._result.return_code
     return self._result
Ejemplo n.º 15
0
    def overwrite_output_file(self):
        """ Method removes all dummy test results from output.xml file together with messages related with those tests
        It overwrites output.xml file generated by robot executor
        :return: None
        """
        result = ExecutionResult(self.output_file_path)
        result.suite.tests = [test for test in result.suite.tests if self.REMOVE_NAME.lower() not in test.name.lower()]

        ResultWriter(result).write_results(
            output=self.output_file_path, report=self.report_file_path, log=self.logger_file_path
        )
Ejemplo n.º 16
0
    def setUp(self):
        self.result = ExecutionResult("""
<robot>
    <suite name="foo">
        <test name="some name">
            <status status="PASS"></status>
        </test>
    <status status="PASS"></status>
    </suite>
</robot>
""")
Ejemplo n.º 17
0
    def test_result_is_built(self):
        xml = """
<robot>
    <suite name="foo">
        <test name="some name">
            <status status="PASS"></status>
        </test>
    <status status="PASS"></status>
    </suite>
</robot>
""".strip()
        result = ExecutionResult(xml)
Ejemplo n.º 18
0
def gather_failed_suites(output, empty_suite_ok=False):
    if output is None:
        return None
    gatherer = GatherFailedSuites()
    try:
        ExecutionResult(output, include_keywords=False).suite.visit(gatherer)
        if not gatherer.suites and not empty_suite_ok:
            raise DataError('All suites passed.')
    except Exception:
        raise DataError("Collecting failed suites from '%s' failed: %s" %
                        (output, get_error_message()))
    return gatherer.suites
Ejemplo n.º 19
0
 def test_excluding_keywords_and_already_processed(self):
     inp = SUITE_TEARDOWN_FAILED.replace('generator="Robot', 'generator="Rebot')
     suite = ExecutionResult(StringIO(inp), include_keywords=False).suite
     passed, failed, teardowns = suite.tests
     assert_equal(passed.status, 'PASS')
     assert_equal(passed.message, '')
     assert_equal(failed.status, 'FAIL')
     assert_equal(failed.message, 'Message')
     assert_equal(teardowns.status, 'PASS')
     assert_equal(teardowns.message, '')
     for item in suite, passed, failed, teardowns:
         assert_equal(list(item.keywords), [])
Ejemplo n.º 20
0
def gather_failed_tests(output):
    if output.upper() == 'NONE':
        return []
    gatherer = GatherFailedTests()
    try:
        ExecutionResult(output).suite.visit(gatherer)
        if not gatherer.tests:
            raise DataError('All tests passed.')
    except:
        raise DataError("Collecting failed tests from '%s' failed: %s" %
                        (output, get_error_message()))
    return gatherer.tests
def gather_failed_suites(output):
    if output.upper() == 'NONE':
        return []
    gatherer = RenameThenGatherFailedSuites()
    try:
        ExecutionResult(output, include_keywords=False).suite.visit(gatherer)
        if not gatherer.suites:
            raise DataError('All suites passed.')
    except:
        raise DataError("Collecting failed suites from '%s' failed: %s"
                        % (output, get_error_message()))
    return gatherer.suites
Ejemplo n.º 22
0
 def test_excluding_keywords(self):
     suite = ExecutionResult(StringIO(SUITE_TEARDOWN_FAILED),
                             include_keywords=False).suite
     passed, failed, teardowns = suite.tests
     assert_equal(passed.status, 'FAIL')
     assert_equal(passed.message, 'Parent suite teardown failed:\nXXX')
     assert_equal(failed.status, 'FAIL')
     assert_equal(failed.message, 'Message\n\n'
                  'Also parent suite teardown failed:\nXXX')
     assert_equal(teardowns.status, 'FAIL')
     assert_equal(teardowns.message, 'Parent suite teardown failed:\nXXX')
     for item in suite, passed, failed, teardowns:
         assert_equal(list(item.keywords), [])
Ejemplo n.º 23
0
 def test_test_message(self):
     xml = """
     <robot>
     <suite name="foo">
       <test name="test">
         <status status="FAIL">Failure message</status>
       </test>
     </suite>
     </robot>
     """
     test = ExecutionResult(StringIO(xml)).suite.tests[0]
     assert_equal(test.message, 'Failure message')
     assert_equal(test.status, 'FAIL')
     assert_equal(test.longname, 'foo.test')
def push_testdetails_to_sql(inxml, buildtag):
    result = ExecutionResult(inxml)
    stats = result.statistics
    test_details = result.suite.tests._items
    testsuite = stats.suite.stat._name
    for test in test_details:
        testcase_name = test.name
        tags = ", ".join(test.tags._tags) if test.tags._tags else ""
        test_passed = str(test.passed)
        querystring = "insert into testrundetails values \
        ('" + buildtag + "','" + testsuite + "','" + testcase_name + "','" + tags + "','" + test_passed + "')"
        print querystring
        cur.execute(querystring)
        con.commit()
Ejemplo n.º 25
0
 def result(self):
     if self._result is None:
         include_keywords = bool(self._settings.log or self._settings.output)
         flattened = self._settings.flatten_keywords
         rerun_merge = self._settings.rerun_merge
         self._result = ExecutionResult(include_keywords=include_keywords,
                                        flattened_keywords=flattened,
                                        rerun_merge=rerun_merge,
                                        *self._sources)
         self._result.configure(self._settings.status_rc,
                                self._settings.suite_config,
                                self._settings.statistics_config)
         self.return_code = self._result.return_code
     return self._result
Ejemplo n.º 26
0
def gather_failed_tests(output, empty_suite_ok=False):
    if output is None:
        return None
    gatherer = GatherFailedTests()
    tests_or_tasks = 'tests or tasks'
    try:
        suite = ExecutionResult(output, include_keywords=False).suite
        suite.visit(gatherer)
        tests_or_tasks = 'tests' if not suite.rpa else 'tasks'
        if not gatherer.tests and not empty_suite_ok:
            raise DataError('All %s passed.' % tests_or_tasks)
    except Exception:
        raise DataError("Collecting failed %s from '%s' failed: %s" %
                        (tests_or_tasks, output, get_error_message()))
    return gatherer.tests
Ejemplo n.º 27
0
def gather_failed_tests(output):
    if output.upper() == 'NONE':
        return []
    gatherer = GatherFailedTests()
    tests_or_tasks = 'tests or tasks'
    try:
        suite = ExecutionResult(output, include_keywords=False).suite
        suite.visit(gatherer)
        tests_or_tasks = 'tests' if not suite.rpa else 'tasks'
        if not gatherer.tests:
            raise DataError('All %s passed.' % tests_or_tasks)
    except:
        raise DataError("Collecting failed %s from '%s' failed: %s" %
                        (tests_or_tasks, output, get_error_message()))
    return gatherer.tests
Ejemplo n.º 28
0
 def result(self):
     if self._result is None:
         include_keywords = bool(self._settings.log or self._settings.output)
         flattened = self._settings.flatten_keywords
         self._result = ExecutionResult(include_keywords=include_keywords,
                                        flattened_keywords=flattened,
                                        merge=self._settings.merge,
                                        *self._sources)
         self._result.configure(self._settings.status_rc,
                                self._settings.suite_config,
                                self._settings.statistics_config)
         modifier = ModelModifier(self._settings.pre_rebot_modifiers,
                                  self._settings.process_empty_suite,
                                  LOGGER)
         self._result.suite.visit(modifier)
         self.return_code = self._result.return_code
     return self._result
Ejemplo n.º 29
0
 def test_nested_suites(self):
     xml = """
     <robot>
     <suite name="foo">
       <suite name="bar">
         <suite name="quux">
         </suite>
       </suite>
     </suite>
     </robot>
     """
     suite = ExecutionResult(StringIO(xml)).suite
     assert_equal(suite.name, 'foo')
     assert_equal(suite.suites[0].name, 'bar')
     assert_equal(suite.longname, 'foo')
     assert_equal(suite.suites[0].longname, 'foo.bar')
     assert_equal(suite.suites[0].suites[0].name, 'quux')
     assert_equal(suite.suites[0].suites[0].longname, 'foo.bar.quux')
Ejemplo n.º 30
0
def report(request):
    param_dict['title'] = '报告'
    data = {}
    history_dir = os.path.join(media_dir, 'history')
    keys = list(filter(None, [y for y in os.listdir(history_dir)]))
    for key in keys:
        data[key] = {}
        childkeys = list(
            filter(None,
                   [y for y in os.listdir(os.path.join(history_dir, key))]))
        for ckey in childkeys:
            xml_path = os.path.join(history_dir, key, ckey, 'output.xml')
            suite = ExecutionResult(xml_path).suite
            allTests = suite.statistics.critical
            data[key][ckey] = [
                allTests.total, allTests.passed, allTests.failed
            ]
    param_dict['data'] = data
    return render(request, 'report.html', param_dict)