未验证 提交 9bf52629 编写于 作者: C Cleber Rosa

Merge branch 'test_phases'

Signed-off-by: NCleber Rosa <crosa@redhat.com>
......@@ -61,7 +61,7 @@ TEST_STATE_ATTRIBUTES = ('name', 'logdir', 'logfile',
'status', 'running', 'paused',
'time_start', 'time_elapsed', 'time_end',
'fail_reason', 'fail_class', 'traceback',
'timeout', 'whiteboard')
'timeout', 'whiteboard', 'phase')
class RawFileHandler(logging.FileHandler):
......@@ -336,6 +336,8 @@ class Test(unittest.TestCase, TestData):
:func:`avocado.data_dir.create_job_logs_dir`.
:param job: The job that this test is part of.
"""
self.__phase = 'INIT'
def record_and_warn(*args, **kwargs):
""" Record call to this function and log warning """
if not self.__log_warn_used:
......@@ -588,6 +590,15 @@ class Test(unittest.TestCase, TestData):
def traceback(self):
return self.__traceback
@property
def phase(self):
"""
The current phase of the test execution
Possible (string) values are: INIT, SETUP, TEST, TEARDOWN and FINISHED
"""
return self.__phase
def __str__(self):
return str(self.name)
......@@ -818,6 +829,8 @@ class Test(unittest.TestCase, TestData):
skip_test = getattr(testMethod, '__skip_test_decorator__', False)
try:
if skip_test is False:
self.__phase = 'SETUP'
self.report_state()
self.setUp()
except exceptions.TestSkipError as details:
skip_test = True
......@@ -832,6 +845,8 @@ class Test(unittest.TestCase, TestData):
raise exceptions.TestSetupFail(details)
else:
try:
self.__phase = 'TEST'
self.report_state()
testMethod()
except exceptions.TestCancel as details:
stacktrace.log_exc_info(sys.exc_info(), logger=LOG_JOB)
......@@ -849,6 +864,8 @@ class Test(unittest.TestCase, TestData):
finally:
try:
if skip_test is False:
self.__phase = 'TEARDOWN'
self.report_state()
self.tearDown()
except exceptions.TestSkipError as details:
stacktrace.log_exc_info(sys.exc_info(), logger=LOG_JOB)
......@@ -992,6 +1009,7 @@ class Test(unittest.TestCase, TestData):
for e_line in tb_info:
self.log.error(e_line)
finally:
self.__phase = 'FINISHED'
self._tag_end()
self._report()
self.log.info("")
......
#!/usr/bin/env python
from avocado import main
from avocado import Test
class Phases(Test):
"""
Example test for checking the reported test phases
"""
def setUp(self):
self.assertEqual(self.phase, 'SETUP')
def test(self):
self.assertEqual(self.phase, 'TEST')
def tearDown(self):
self.assertEqual(self.phase, 'TEARDOWN')
if __name__ == "__main__":
main()
......@@ -183,6 +183,14 @@ class RunnerOperationTest(unittest.TestCase):
self.assertIn(' data ' + mapping['data_dir'], result.stdout_text)
self.assertIn(' logs ' + mapping['logs_dir'], result.stdout_text)
def test_runner_phases(self):
cmd_line = ('%s run --sysinfo=off --job-results-dir %s '
'phases.py' % (AVOCADO, self.tmpdir))
result = process.run(cmd_line)
expected_rc = exit_codes.AVOCADO_ALL_OK
self.assertEqual(result.exit_status, expected_rc,
"Avocado did not return rc %d:\n%s" % (expected_rc, result))
def test_runner_all_ok(self):
cmd_line = ('%s run --sysinfo=off --job-results-dir %s '
'passtest.py passtest.py' % (AVOCADO, self.tmpdir))
......@@ -298,7 +306,9 @@ class RunnerOperationTest(unittest.TestCase):
self.assertEqual(results["tests"][0]["status"], "ERROR",
"%s != %s\n%s" % (results["tests"][0]["status"],
"ERROR", res))
self.assertIn("Test died without reporting the status",
self.assertIn("Test reports unsupported test status",
results["tests"][0]["fail_reason"])
self.assertIn("status: None",
results["tests"][0]["fail_reason"])
def test_runner_tests_fail(self):
......
......@@ -59,6 +59,7 @@ class TestRunnerQueue(unittest.TestCase):
msg = self._run_test(factory)
self.assertEqual(msg['whiteboard'], 'TXkgbWVzc2FnZSBlbmNvZGVkIGluIGJhc2U2NA==\n')
self.assertIn('phase', msg)
def tearDown(self):
shutil.rmtree(self.tmpdir)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册