diff --git a/openstackclient/tests/compute/v2/fakes.py b/openstackclient/tests/compute/v2/fakes.py
index a90c9ee71a..1a876a229b 100644
--- a/openstackclient/tests/compute/v2/fakes.py
+++ b/openstackclient/tests/compute/v2/fakes.py
@@ -106,6 +106,8 @@ class FakeComputev2Client(object):
         self.quota_classes.resource_class = fakes.FakeResource(None, {})
         self.volumes = mock.Mock()
         self.volumes.resource_class = fakes.FakeResource(None, {})
+        self.hypervisors = mock.Mock()
+        self.hypervisors.resource_class = fakes.FakeResource(None, {})
         self.auth_token = kwargs['token']
         self.management_url = kwargs['endpoint']
 
@@ -140,6 +142,49 @@ class TestComputev2(utils.TestCommand):
         )
 
 
+class FakeHypervisor(object):
+    """Fake one or more hypervisor."""
+
+    @staticmethod
+    def create_one_hypervisor(attrs={}):
+        """Create a fake hypervisor.
+
+        :param Dictionary attrs:
+            A dictionary with all attributes
+        :return:
+            A FakeResource object, with id, hypervisor_hostname, and so on
+        """
+        # Set default attributes.
+        hypervisor_info = {
+            'id': 'hypervisor-id-' + uuid.uuid4().hex,
+            'hypervisor_hostname': 'hypervisor-hostname-' + uuid.uuid4().hex,
+        }
+
+        # Overwrite default attributes.
+        hypervisor_info.update(attrs)
+
+        hypervisor = fakes.FakeResource(info=copy.deepcopy(hypervisor_info),
+                                        loaded=True)
+        return hypervisor
+
+    @staticmethod
+    def create_hypervisors(attrs={}, count=2):
+        """Create multiple fake hypervisors.
+
+        :param Dictionary attrs:
+            A dictionary with all attributes
+        :param int count:
+            The number of hypervisors to fake
+        :return:
+            A list of FakeResource objects faking the hypervisors
+        """
+        hypervisors = []
+        for i in range(0, count):
+            hypervisors.append(FakeHypervisor.create_one_hypervisor(attrs))
+
+        return hypervisors
+
+
 class FakeServer(object):
     """Fake one or more compute servers."""
 
diff --git a/openstackclient/tests/compute/v2/test_hypervisor.py b/openstackclient/tests/compute/v2/test_hypervisor.py
new file mode 100644
index 0000000000..1f52ee0943
--- /dev/null
+++ b/openstackclient/tests/compute/v2/test_hypervisor.py
@@ -0,0 +1,115 @@
+#   Copyright 2016 EasyStack Corporation
+#
+#   Licensed under the Apache License, Version 2.0 (the "License"); you may
+#   not use this file except in compliance with the License. You may obtain
+#   a copy of the License at
+#
+#        http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#   WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#   License for the specific language governing permissions and limitations
+#   under the License.
+#
+
+from openstackclient.common import exceptions
+from openstackclient.compute.v2 import hypervisor
+from openstackclient.tests.compute.v2 import fakes as compute_fakes
+
+
+class TestHypervisor(compute_fakes.TestComputev2):
+
+    def setUp(self):
+        super(TestHypervisor, self).setUp()
+
+        # Get a shortcut to the compute client hypervisors mock
+        self.hypervisors_mock = self.app.client_manager.compute.hypervisors
+        self.hypervisors_mock.reset_mock()
+
+
+class TestHypervisorList(TestHypervisor):
+
+    def setUp(self):
+        super(TestHypervisorList, self).setUp()
+
+        # Fake hypervisors to be listed up
+        self.hypervisors = compute_fakes.FakeHypervisor.create_hypervisors()
+        self.hypervisors_mock.list.return_value = self.hypervisors
+
+        self.columns = (
+            "ID",
+            "Hypervisor Hostname"
+        )
+        self.data = (
+            (
+                self.hypervisors[0].id,
+                self.hypervisors[0].hypervisor_hostname,
+            ),
+            (
+                self.hypervisors[1].id,
+                self.hypervisors[1].hypervisor_hostname,
+            ),
+        )
+
+        # Get the command object to test
+        self.cmd = hypervisor.ListHypervisor(self.app, None)
+
+    def test_hypervisor_list_no_option(self):
+        arglist = []
+        verifylist = []
+        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+        # In base command class Lister in cliff, abstractmethod take_action()
+        # returns a tuple containing the column names and an iterable
+        # containing the data to be listed.
+        columns, data = self.cmd.take_action(parsed_args)
+
+        self.hypervisors_mock.list.assert_called_with()
+        self.assertEqual(self.columns, columns)
+        self.assertEqual(self.data, tuple(data))
+
+    def test_hypervisor_list_matching_option_found(self):
+        arglist = [
+            '--matching', self.hypervisors[0].hypervisor_hostname,
+        ]
+        verifylist = [
+            ('matching', self.hypervisors[0].hypervisor_hostname),
+        ]
+        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+        # Fake the return value of search()
+        self.hypervisors_mock.search.return_value = [self.hypervisors[0]]
+        self.data = (
+            (
+                self.hypervisors[0].id,
+                self.hypervisors[0].hypervisor_hostname,
+            ),
+        )
+
+        # In base command class Lister in cliff, abstractmethod take_action()
+        # returns a tuple containing the column names and an iterable
+        # containing the data to be listed.
+        columns, data = self.cmd.take_action(parsed_args)
+
+        self.hypervisors_mock.search.assert_called_with(
+            self.hypervisors[0].hypervisor_hostname
+        )
+        self.assertEqual(self.columns, columns)
+        self.assertEqual(self.data, tuple(data))
+
+    def test_hypervisor_list_matching_option_not_found(self):
+        arglist = [
+            '--matching', 'xxx',
+        ]
+        verifylist = [
+            ('matching', 'xxx'),
+        ]
+        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+        # Fake exception raised from search()
+        self.hypervisors_mock.search.side_effect = exceptions.NotFound(None)
+
+        self.assertRaises(exceptions.NotFound,
+                          self.cmd.take_action,
+                          parsed_args)