diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_code.py
index 6b37315..b6ee968 100644
--- a/tests/scripts/generate_code.py
+++ b/tests/scripts/generate_code.py
@@ -42,6 +42,9 @@
 BEGIN_HEADER_REGEX = '/\*\s*BEGIN_HEADER\s*\*/'
 END_HEADER_REGEX = '/\*\s*END_HEADER\s*\*/'
 
+BEGIN_SUITE_HELPERS_REGEX = '/\*\s*BEGIN_SUITE_HELPERS\s*\*/'
+END_SUITE_HELPERS_REGEX = '/\*\s*END_SUITE_HELPERS\s*\*/'
+
 BEGIN_DEP_REGEX = 'BEGIN_DEPENDENCIES'
 END_DEP_REGEX = 'END_DEPENDENCIES'
 
@@ -172,20 +175,21 @@
     return dispatch_code
 
 
-def parse_suite_headers(funcs_f):
+def parse_until_pattern(funcs_f, end_regex):
     """
-    Parses function headers.
+    Parses function headers or helper code until end pattern.
     
     :param funcs_f: file object for .functions file
+    :param end_regex: Pattern to stop parsing
     :return: Test suite headers code
     """
     headers = '#line %d "%s"\n' % (funcs_f.line_no + 1, funcs_f.name)
     for line in funcs_f:
-        if re.search(END_HEADER_REGEX, line):
+        if re.search(end_regex, line):
             break
         headers += line
     else:
-        raise InvalidFileFormat("file: %s - end header pattern [%s] not found!" % (funcs_f.name, END_HEADER_REGEX))
+        raise InvalidFileFormat("file: %s - end pattern [%s] not found!" % (funcs_f.name, end_regex))
 
     return headers
 
@@ -325,6 +329,7 @@
              a dict with function identifiers and arguments info.
     """
     suite_headers = ''
+    suite_helpers = ''
     suite_deps = []
     suite_functions = ''
     func_info = {}
@@ -332,8 +337,11 @@
     dispatch_code = ''
     for line in funcs_f:
         if re.search(BEGIN_HEADER_REGEX, line):
-            headers = parse_suite_headers(funcs_f)
+            headers = parse_until_pattern(funcs_f, END_HEADER_REGEX)
             suite_headers += headers
+        elif re.search(BEGIN_SUITE_HELPERS_REGEX, line):
+            helpers = parse_until_pattern(funcs_f, END_SUITE_HELPERS_REGEX)
+            suite_helpers += helpers
         elif re.search(BEGIN_DEP_REGEX, line):
             deps = parse_suite_deps(funcs_f)
             suite_deps += deps
@@ -350,7 +358,7 @@
             function_idx += 1
 
     ifdef, endif = gen_deps(suite_deps)
-    func_code = ifdef + suite_headers + suite_functions + endif
+    func_code = ifdef + suite_headers + suite_helpers + suite_functions + endif
     return suite_deps, dispatch_code, func_code, func_info
 
 
