diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py
old mode 100644
new mode 100755
index 38b0d75..bf4ddb8
--- a/tests/scripts/generate_test_code.py
+++ b/tests/scripts/generate_test_code.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 # Test suites code generator.
 #
 # Copyright (C) 2018, ARM Limited, All Rights Reserved
@@ -33,8 +34,10 @@
 """
 
 
+import io
 import os
 import re
+import sys
 import argparse
 import shutil
 
@@ -59,7 +62,7 @@
     pass
 
 
-class FileWrapper(file):
+class FileWrapper(io.FileIO):
     """
     File wrapper class. Provides reading with line no. tracking. 
     """
@@ -73,24 +76,17 @@
         super(FileWrapper, self).__init__(file_name, 'r')
         self.line_no = 0
 
-    def next(self):
+    def __next__(self):
         """
         Iterator return impl.
         :return: Line read from file.
         """
-        line = super(FileWrapper, self).next()
+        line = super(FileWrapper, self).__next__()
         if line:
             self.line_no += 1
-        return line
-
-    def readline(self, limit=0):
-        """
-        Wrap the base class readline.
-        
-        :param limit: limit to match file.readline([limit])
-        :return: Line read from file.
-        """
-        return self.next()
+            # Convert byte array to string with correct encoding
+            return line.decode(sys.getdefaultencoding())
+        return None
 
 
 def split_dep(dep):
@@ -513,7 +509,7 @@
     :return: Returns expression check code.
     """
     expression_code = ''
-    for i in xrange(len(test_args)):
+    for i in range(len(test_args)):
         typ = func_args[i]
         val = test_args[i]
 
