# TODO support get multi hosts/vms info
         context_cfg = {}
-        server_name = scenario_cfg.get('options', {}).get('server_name', {})
+        options = scenario_cfg.get('options') or {}
+        server_name = options.get('server_name') or {}
 
         def config_context_target(cfg):
             target = cfg['target']
             scenario['host'] = qualified_name(scenario['host'])
         if 'target' in scenario:
             scenario['target'] = qualified_name(scenario['target'])
-        server_name = scenario.get('options', {}).get('server_name', {})
+        options = scenario.get('options') or {}
+        server_name = options.get('server_name') or {}
         if 'host' in server_name:
             server_name['host'] = qualified_name(server_name['host'])
         if 'target' in server_name:
 
         self.parser._change_node_names(scenario, [my_context])
         self.assertEqual(scenario, expected_scenario)
 
+    def test__change_node_names_options_empty(self):
+        ctx_attrs = {
+            'name': 'demo',
+            'task_id': '1234567890'
+        }
+
+        my_context = dummy.DummyContext()
+        my_context.init(ctx_attrs)
+        scenario = copy.deepcopy(self.scenario)
+        scenario['options'] = None
+
+        self.parser._change_node_names(scenario, [my_context])
+        self.assertIsNone(scenario['options'])
+
+    def test__change_node_names_options_server_name_empty(self):
+        ctx_attrs = {
+            'name': 'demo',
+            'task_id': '1234567890'
+        }
+
+        my_context = dummy.DummyContext()
+        my_context.init(ctx_attrs)
+        scenario = copy.deepcopy(self.scenario)
+        scenario['options']['server_name'] = None
+
+        self.parser._change_node_names(scenario, [my_context])
+        self.assertIsNone(scenario['options']['server_name'])
+
     def test__parse_tasks(self):
         task_obj = task.Task()
         _uuid = uuid.uuid4()