diff --git a/heat_tempest_plugin/common/test.py b/heat_tempest_plugin/common/test.py
index 429d4ae..aacd019 100644
--- a/heat_tempest_plugin/common/test.py
+++ b/heat_tempest_plugin/common/test.py
@@ -10,7 +10,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import os
 import random
 import re
 import subprocess
@@ -206,13 +205,6 @@
             LOG.info('Console output for %s', server.id)
             LOG.info(server.get_console_output())
 
-    def _load_template(self, base_file, file_name, sub_dir=None):
-        sub_dir = sub_dir or ''
-        filepath = os.path.join(os.path.dirname(os.path.realpath(base_file)),
-                                sub_dir, file_name)
-        with open(filepath) as f:
-            return f.read()
-
     def create_keypair(self, client=None, name=None):
         if client is None:
             client = self.compute_client
diff --git a/heat_tempest_plugin/tests/scenario/scenario_base.py b/heat_tempest_plugin/tests/scenario/scenario_base.py
index 5cfb5d1..db38c4e 100644
--- a/heat_tempest_plugin/tests/scenario/scenario_base.py
+++ b/heat_tempest_plugin/tests/scenario/scenario_base.py
@@ -10,6 +10,10 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import os
+import yaml
+
+from heatclient.common import template_utils
 from oslo_utils import reflection
 
 from heat_tempest_plugin.common import test
@@ -33,9 +37,19 @@
         if not self.conf.minimal_instance_type:
             raise self.skipException("No minimal flavor configured to test")
 
+    def _load_template(self, base_file, file_name, sub_dir=None, files=None):
+        sub_dir = sub_dir or ''
+        filepath = os.path.join(os.path.dirname(os.path.realpath(base_file)),
+                                sub_dir, file_name)
+        _files, template = template_utils.get_template_contents(filepath,
+                                                                files=files)
+        return yaml.safe_dump(template)
+
     def launch_stack(self, template_name, expected_status='CREATE_COMPLETE',
                      parameters=None, **kwargs):
-        template = self._load_template(__file__, template_name, self.sub_dir)
+        files = kwargs.get('files', {})
+        template = self._load_template(__file__, template_name, self.sub_dir,
+                                       files)
 
         parameters = parameters or {}
 
@@ -45,7 +59,7 @@
         stack_id = self.stack_create(
             stack_name=kwargs.get('stack_name'),
             template=template,
-            files=kwargs.get('files'),
+            files=files,
             parameters=parameters,
             environment=kwargs.get('environment'),
             expected_status=expected_status
