diff options
author | Cedric Ollivier <cedric.ollivier@orange.com> | 2018-02-19 20:17:35 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2018-02-19 20:17:35 +0000 |
commit | de3160230a010e5fd2aaf03630e31e807aeee34f (patch) | |
tree | 0e7ba5bdea8f222f8e09362ce6103e24d91dd2c6 | |
parent | c49ada60d6b5390ea7e28d4e681195ad759b5214 (diff) | |
parent | 916e12ca41b90d581d44f78e5be3db15daf875c8 (diff) |
Merge "Generate tempest verification report (HTML)"
-rw-r--r-- | functest/opnfv_tests/openstack/tempest/tempest.py | 14 | ||||
-rw-r--r-- | functest/tests/unit/openstack/tempest/test_tempest.py | 23 |
2 files changed, 31 insertions, 6 deletions
diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py index 105d16552..d474ec3a9 100644 --- a/functest/opnfv_tests/openstack/tempest/tempest.py +++ b/functest/opnfv_tests/openstack/tempest/tempest.py @@ -193,11 +193,11 @@ class TempestCommon(testcase.TestCase): f_stdout.close() f_stderr.close() - def parse_verifier_result(self): - """Parse and save test results.""" if self.verification_id is None: raise Exception('Verification UUID not found') + def parse_verifier_result(self): + """Parse and save test results.""" stat = self.get_verifier_result(self.verification_id) try: num_executed = stat['num_tests'] - stat['num_skipped'] @@ -236,6 +236,15 @@ class TempestCommon(testcase.TestCase): LOGGER.info("Tempest %s success_rate is %s%%", self.case_name, self.result) + def generate_report(self): + """Generate verification report.""" + html_file = os.path.join(conf_utils.TEMPEST_RESULTS_DIR, + "tempest-report.html") + cmd = ["rally", "verify", "report", "--type", "html", "--uuid", + self.verification_id, "--to", html_file] + subprocess.Popen(cmd, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + def run(self, **kwargs): self.start_time = time.time() @@ -255,6 +264,7 @@ class TempestCommon(testcase.TestCase): self.apply_tempest_blacklist() self.run_verifier_tests() self.parse_verifier_result() + self.generate_report() res = testcase.TestCase.EX_OK except Exception as err: # pylint: disable=broad-except LOGGER.error('Error with run: %s', err) diff --git a/functest/tests/unit/openstack/tempest/test_tempest.py b/functest/tests/unit/openstack/tempest/test_tempest.py index c4c8a7772..77cf28afa 100644 --- a/functest/tests/unit/openstack/tempest/test_tempest.py +++ b/functest/tests/unit/openstack/tempest/test_tempest.py @@ -147,9 +147,22 @@ class OSTempestTesting(unittest.TestCase): conf_utils.TEMPEST_LIST = 'test_tempest_list' cmd = ["rally", "verify", "start", "--load-list", conf_utils.TEMPEST_LIST] - self.tempestcommon.run_verifier_tests() - mock_logger_info. \ - assert_any_call("Starting Tempest test suite: '%s'.", cmd) + with self.assertRaises(Exception): + self.tempestcommon.run_verifier_tests() + mock_logger_info. \ + assert_any_call("Starting Tempest test suite: '%s'.", cmd) + + @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.' + 'subprocess.Popen') + def test_generate_report(self, mock_popen): + self.tempestcommon.verification_id = "1234" + html_file = os.path.join(conf_utils.TEMPEST_RESULTS_DIR, + "tempest-report.html") + cmd = ["rally", "verify", "report", "--type", "html", "--uuid", + "1234", "--to", html_file] + self.tempestcommon.generate_report() + mock_popen.assert_called_once_with(cmd, stdout=mock.ANY, + stderr=mock.ANY) @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.' 'os.path.exists', return_value=False) @@ -245,7 +258,9 @@ class OSTempestTesting(unittest.TestCase): mock.patch.object(self.tempestcommon, 'apply_tempest_blacklist'), \ mock.patch.object(self.tempestcommon, 'run_verifier_tests'), \ - mock.patch.object(self.tempestcommon, 'parse_verifier_result'): + mock.patch.object(self.tempestcommon, + 'parse_verifier_result'), \ + mock.patch.object(self.tempestcommon, 'generate_report'): self._test_run(testcase.TestCase.EX_OK) |