diff --git a/src/oxygen/oxygen.py b/src/oxygen/oxygen.py index 6b39606..85f491a 100644 --- a/src/oxygen/oxygen.py +++ b/src/oxygen/oxygen.py @@ -8,6 +8,7 @@ from robot.api import ExecutionResult, ResultVisitor, ResultWriter from robot.libraries.BuiltIn import BuiltIn +from robot.errors import DataError from yaml import load, FullLoader from .config import CONFIG_FILE @@ -85,9 +86,13 @@ def __init__(self): self.run_time_data = {} def end_test(self, name, attributes): - lib = BuiltIn().get_library_instance('oxygen.OxygenLibrary') - if lib: - self.run_time_data[attributes['longname']] = lib.data + try: + lib = BuiltIn()._get_context().namespace.get_library_instance( + 'oxygen.OxygenLibrary') + if lib: + self.run_time_data[attributes['longname']] = lib.data + except DataError as _: + pass def output_file(self, path): result = ExecutionResult(path) diff --git a/tests/atest/test_with_import.robot b/tests/atest/test_with_import.robot new file mode 100644 index 0000000..380c633 --- /dev/null +++ b/tests/atest/test_with_import.robot @@ -0,0 +1,16 @@ +*** Settings *** +Library oxygen.OxygenLibrary +Library OperatingSystem + +*** Variables *** +${JUNIT XML FILE}= ${CURDIR}${/}..${/}resources${/}junit-single-testsuite.xml + +*** Test Cases *** +Oxygen's unit test with dynamic import + Import Library oxygen.OxygenLibrary + Run JUnit ${JUNIT XML FILE} + ... echo Run JUnit Dynamically Imported + +Oxygen's unit test with global import + Run JUnit ${JUNIT XML FILE} + ... echo Run JUnit Globally Imported diff --git a/tests/atest/test_without_import.robot b/tests/atest/test_without_import.robot new file mode 100644 index 0000000..390d715 --- /dev/null +++ b/tests/atest/test_without_import.robot @@ -0,0 +1,3 @@ +*** Test Cases *** +Oxygen's unit test without import + Log Some text diff --git a/tests/utest/oxygen/test_oxygen_listener.py b/tests/utest/oxygen/test_oxygen_listener.py index aed99c4..582f347 100644 --- a/tests/utest/oxygen/test_oxygen_listener.py +++ b/tests/utest/oxygen/test_oxygen_listener.py @@ -11,10 +11,13 @@ def test_listener_api_version_is_not_changed_accidentally(self): self.assertEqual(self.listener.ROBOT_LISTENER_API_VERSION, 2) def mock_lib_instance(self, mock_builtin, return_value): - m = Mock() - m.get_library_instance.return_value = return_value - mock_builtin.return_value = m - return m + m_builtin = Mock() + m_get_context = Mock() + m_builtin._get_context.return_value = m_get_context + m_get_context.namespace.get_library_instance.return_value = \ + return_value + mock_builtin.return_value = m_builtin + return m_builtin @patch('oxygen.oxygen.BuiltIn') def test_end_test_when_library_was_not_used(self, mock_builtin): @@ -22,7 +25,7 @@ def test_end_test_when_library_was_not_used(self, mock_builtin): self.listener.end_test('foo', {}) - m.get_library_instance.assert_called_once_with('oxygen.OxygenLibrary') + m._get_context().namespace.get_library_instance.assert_called_once_with('oxygen.OxygenLibrary') self.assertEqual(self.listener.run_time_data, {}) @patch('oxygen.oxygen.BuiltIn') @@ -33,7 +36,7 @@ def test_end_test_when_library_was_used(self, mock_builtin): self.listener.end_test('oxygen.OxygenLibrary', {'longname': 'hello'}) - m.get_library_instance.assert_called_once_with('oxygen.OxygenLibrary') + m._get_context().namespace.get_library_instance.assert_called_once_with('oxygen.OxygenLibrary') self.assertEqual(self.listener.run_time_data, {'hello': ('I do not have a solution, but I do ' 'admire the problem')})