diff --git a/test/remote_test.py b/test/remote_test.py
index 18db39c..40e7984 100644
--- a/test/remote_test.py
+++ b/test/remote_test.py
@@ -6,7 +6,7 @@
 from multiprocessing import Process, Pipe
 from pickle import dumps
 
-import six
+from six import moves
 
 from framework import VppTestCase
 
@@ -102,7 +102,7 @@
         self._pipe = Pipe()  # pipe for input/output arguments
 
     def __repr__(self):
-        return six.reprlib(RemoteClassAttr(self, None))
+        return moves.reprlib.repr(RemoteClassAttr(self, None))
 
     def __str__(self):
         return str(RemoteClassAttr(self, None))
@@ -194,7 +194,7 @@
     def _get_local_repr(self, path):
         try:
             obj = self._get_local_object(path)
-            return six.reprlib(obj)
+            return moves.reprlib.repr(obj)
         except AttributeError:
             return None
 
diff --git a/test/test_bfd.py b/test/test_bfd.py
index 9bae4fe..635e7e1 100644
--- a/test/test_bfd.py
+++ b/test/test_bfd.py
@@ -11,7 +11,7 @@
 from socket import AF_INET, AF_INET6, inet_ntop
 from struct import pack, unpack
 
-import six
+from six import moves
 from scapy.layers.inet import UDP, IP
 from scapy.layers.inet6 import IPv6
 from scapy.layers.l2 import Ether
@@ -606,7 +606,7 @@
 def verify_event(test, event, expected_state):
     """ Verify correctness of event values. """
     e = event
-    test.logger.debug("BFD: Event: %s" % six.reprlib(e))
+    test.logger.debug("BFD: Event: %s" % moves.reprlib.repr(e))
     test.assert_equal(e.sw_if_index,
                       test.vpp_session.interface.sw_if_index,
                       "BFD interface index")
diff --git a/test/vpp_interface.py b/test/vpp_interface.py
index 0f798cb..8639f87 100644
--- a/test/vpp_interface.py
+++ b/test/vpp_interface.py
@@ -1,7 +1,7 @@
 import socket
 from abc import abstractmethod, ABCMeta
 
-import six
+from six import moves
 
 from util import Host, mk_ll_addr, mactobinary
 
@@ -240,7 +240,7 @@
             raise Exception(
                 "Could not find interface with sw_if_index %d "
                 "in interface dump %s" %
-                (self.sw_if_index, six.reprlib(r)))
+                (self.sw_if_index, moves.reprlib.repr(r)))
         self._local_ip6_ll = mk_ll_addr(self.local_mac)
         self._local_ip6n_ll = socket.inet_pton(socket.AF_INET6,
                                                self.local_ip6_ll)
diff --git a/test/vpp_object.py b/test/vpp_object.py
index 8fe549e..1b0fada 100644
--- a/test/vpp_object.py
+++ b/test/vpp_object.py
@@ -2,7 +2,7 @@
 
 from abc import ABCMeta, abstractmethod
 
-import six
+from six import moves
 
 
 class VppObject(object):
@@ -83,6 +83,6 @@
         if failed:
             logger.error("REG: Couldn't remove configuration for object(s):")
             for obj in failed:
-                logger.error(six.reprlib(obj))
+                logger.error(moves.reprlib.repr(obj))
             raise Exception("Couldn't remove configuration for object(s): %s" %
                             (", ".join(str(x) for x in failed)))
diff --git a/test/vpp_papi_provider.py b/test/vpp_papi_provider.py
index eecf6e2..91e46df 100644
--- a/test/vpp_papi_provider.py
+++ b/test/vpp_papi_provider.py
@@ -3,7 +3,7 @@
 import time
 from collections import deque
 
-import six
+from six import moves
 
 from hook import Hook
 
@@ -187,14 +187,14 @@
             if hasattr(reply, 'retval') and reply.retval >= 0:
                 msg = "API call passed unexpectedly: expected negative "\
                     "return value instead of %d in %s" % \
-                    (reply.retval, six.reprlib(reply))
+                    (reply.retval, moves.reprlib.repr(reply))
                 self.test_class.logger.info(msg)
                 raise UnexpectedApiReturnValueError(msg)
         elif self._expect_api_retval == self._zero:
             if hasattr(reply, 'retval') and reply.retval != expected_retval:
                 msg = "API call failed, expected %d return value instead "\
                     "of %d in %s" % (expected_retval, reply.retval,
-                                     six.reprlib(reply))
+                                     moves.reprlib.repr(reply))
                 self.test_class.logger.info(msg)
                 raise UnexpectedApiReturnValueError(msg)
         else:
