diff --git a/manila_tempest_tests/tests/api/admin/test_share_servers.py b/manila_tempest_tests/tests/api/admin/test_share_servers.py
index d01600e..25cc406 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_servers.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_servers.py
@@ -53,7 +53,7 @@
     @tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
     def test_list_share_servers_without_filters(self):
         servers = self.shares_client.list_share_servers()
-        self.assertTrue(len(servers) > 0)
+        self.assertGreater(len(servers), 0)
         keys = [
             "id",
             "host",
@@ -70,11 +70,11 @@
             if server["updated_at"]:
                 self.assertTrue(self.date_re.match(server["updated_at"]))
             # Host is not empty
-            self.assertTrue(len(server["host"]) > 0)
+            self.assertGreater(len(server["host"]), 0)
             # Id is not empty
-            self.assertTrue(len(server["id"]) > 0)
+            self.assertGreater(len(server["id"]), 0)
             # Project id is not empty
-            self.assertTrue(len(server["project_id"]) > 0)
+            self.assertGreater(len(server["project_id"]), 0)
 
         # Do not verify statuses because we get all share servers from whole
         # cluster and here can be servers with any state.
@@ -103,7 +103,7 @@
             raise lib_exc.NotFound(message=msg)
         search_opts = {"host": host}
         servers = self.shares_client.list_share_servers(search_opts)
-        self.assertTrue(len(servers) > 0)
+        self.assertGreater(len(servers), 0)
         for server in servers:
             self.assertEqual(server["host"], host)
 
@@ -129,7 +129,7 @@
             raise lib_exc.NotFound(message=msg)
         search_opts = {"status": status}
         servers = self.shares_client.list_share_servers(search_opts)
-        self.assertTrue(len(servers) > 0)
+        self.assertGreater(len(servers), 0)
         for server in servers:
             self.assertEqual(server["status"], status)
 
@@ -138,7 +138,7 @@
         search_opts = {"project_id": self.share_network["project_id"]}
         servers = self.shares_client.list_share_servers(search_opts)
         # Should exist, at least, one share server, used by this test suite.
-        self.assertTrue(len(servers) > 0)
+        self.assertGreater(len(servers), 0)
         for server in servers:
             self.assertEqual(server["project_id"],
                              self.share_network["project_id"])
@@ -148,7 +148,7 @@
         search_opts = {"share_network": self.share_network["name"]}
         servers = self.shares_client.list_share_servers(search_opts)
         # Should exist, at least, one share server, used by this test suite.
-        self.assertTrue(len(servers) > 0)
+        self.assertGreater(len(servers), 0)
         for server in servers:
             self.assertEqual(server["share_network_name"],
                              self.share_network["name"])
@@ -158,7 +158,7 @@
         search_opts = {"share_network": self.share_network["id"]}
         servers = self.shares_client.list_share_servers(search_opts)
         # Should exist, at least, one share server, used by this test suite.
-        self.assertTrue(len(servers) > 0)
+        self.assertGreater(len(servers), 0)
         for server in servers:
             self.assertIn(server["share_network_name"],
                           self.sn_name_and_id)
@@ -186,15 +186,15 @@
         if server["updated_at"]:
             self.assertTrue(self.date_re.match(server["updated_at"]))
         # Host is not empty
-        self.assertTrue(len(server["host"]) > 0)
+        self.assertGreater(len(server["host"]), 0)
         # Id is not empty
-        self.assertTrue(len(server["id"]) > 0)
+        self.assertGreater(len(server["id"]), 0)
         # Project id is not empty
-        self.assertTrue(len(server["project_id"]) > 0)
+        self.assertGreater(len(server["project_id"]), 0)
         # Status is not empty
-        self.assertTrue(len(server["status"]) > 0)
+        self.assertGreater(len(server["status"]), 0)
         # share_network_name is not empty
-        self.assertTrue(len(server["share_network_name"]) > 0)
+        self.assertGreater(len(server["share_network_name"]), 0)
         # backend_details should be a dict
         self.assertIsInstance(server["backend_details"], dict)
 
diff --git a/manila_tempest_tests/tests/api/admin/test_share_types.py b/manila_tempest_tests/tests/api/admin/test_share_types.py
index c9671c3..af354bb 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_types.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_types.py
@@ -100,7 +100,7 @@
         # list share types
         st_list = self.shares_v2_client.list_share_types(version=version)
         sts = st_list["share_types"]
-        self.assertTrue(len(sts) >= 1)
+        self.assertGreaterEqual(len(sts), 1)
         self.assertTrue(any(st_id in st["id"] for st in sts))
         for st in sts:
             self._verify_is_public_key_name(st, version)
diff --git a/manila_tempest_tests/tests/api/admin/test_shares_actions.py b/manila_tempest_tests/tests/api/admin/test_shares_actions.py
index 72edd6b..eb049c6 100644
--- a/manila_tempest_tests/tests/api/admin/test_shares_actions.py
+++ b/manila_tempest_tests/tests/api/admin/test_shares_actions.py
@@ -150,7 +150,7 @@
         shares = self.shares_client.list_shares_with_detail(params=filters)
 
         # verify response
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         for share in shares:
             self.assertDictContainsSubset(
                 filters['metadata'], share['metadata'])
@@ -170,7 +170,7 @@
         shares = self.shares_client.list_shares_with_detail(params=filters)
 
         # verify response
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         shares_ids = [s["id"] for s in shares]
         for share in self.shares:
             self.assertIn(share["id"], shares_ids)
@@ -198,7 +198,7 @@
         shares = self.shares_client.list_shares_with_detail(params=filters)
 
         # verify response
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         for share in shares:
             st_list = self.shares_client.list_share_types()
             # find its name or id, get id
@@ -229,7 +229,7 @@
         shares = self.shares_client.list_shares_with_detail(params=filters)
 
         # verify response
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         for share in shares:
             self.assertEqual(filters['host'], share['host'])
 
@@ -244,7 +244,7 @@
         shares = self.shares_client.list_shares_with_detail(params=filters)
 
         # verify response
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         for share in shares:
             self.assertEqual(
                 filters['share_network_id'], share['share_network_id'])
@@ -259,7 +259,7 @@
         shares = self.shares_client.list_shares_with_detail(params=filters)
 
         # verify response
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         for share in shares:
             self.assertEqual(filters['snapshot_id'], share['snapshot_id'])
         self.assertFalse(self.shares[0]['id'] in [s['id'] for s in shares])
@@ -272,7 +272,7 @@
         shares = self.shares_client.list_shares_with_detail(params=filters)
 
         # verify response
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         sorted_list = [share['created_at'] for share in shares]
         self.assertEqual(sorted(sorted_list), sorted_list)
 
@@ -295,7 +295,7 @@
         # list shares by active status, at least one share is expected
         params = {"status": "available"}
         shares = self.shares_client.list_shares_with_detail(params)
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         for share in shares:
             self.assertEqual(params["status"], share["status"])
 
diff --git a/manila_tempest_tests/tests/api/test_availability_zones.py b/manila_tempest_tests/tests/api/test_availability_zones.py
index 0b4739b..0d87036 100644
--- a/manila_tempest_tests/tests/api/test_availability_zones.py
+++ b/manila_tempest_tests/tests/api/test_availability_zones.py
@@ -21,7 +21,7 @@
 class AvailabilityZonesTest(base.BaseSharesTest):
 
     def _list_availability_zones_assertions(self, availability_zones):
-        self.assertTrue(len(availability_zones) > 0)
+        self.assertGreater(len(availability_zones), 0)
         keys = ("created_at", "updated_at", "name", "id")
         for az in availability_zones:
             self.assertEqual(len(keys), len(az))
diff --git a/manila_tempest_tests/tests/api/test_share_networks.py b/manila_tempest_tests/tests/api/test_share_networks.py
index 430fba8..577c5a4 100644
--- a/manila_tempest_tests/tests/api/test_share_networks.py
+++ b/manila_tempest_tests/tests/api/test_share_networks.py
@@ -94,8 +94,8 @@
         for sn in listed:
             self.assertTrue(all(sn[key] == value for key, value in
                                 six.iteritems(valid_filter_opts)))
-            self.assertTrue(sn['created_at'] <= created_before)
-            self.assertTrue(sn['created_at'] >= created_since)
+            self.assertLessEqual(sn['created_at'], created_before)
+            self.assertGreaterEqual(sn['created_at'], created_since)
 
 
 class ShareNetworksTest(base.BaseSharesTest, ShareNetworkListMixin):
diff --git a/manila_tempest_tests/tests/api/test_shares_actions.py b/manila_tempest_tests/tests/api/test_shares_actions.py
index 60fd615..da44c7c 100644
--- a/manila_tempest_tests/tests/api/test_shares_actions.py
+++ b/manila_tempest_tests/tests/api/test_shares_actions.py
@@ -255,7 +255,7 @@
         shares = self.shares_client.list_shares_with_detail(params=filters)
 
         # verify response
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         for share in shares:
             self.assertDictContainsSubset(
                 filters['metadata'], share['metadata'])
@@ -271,7 +271,7 @@
         shares = self.shares_client.list_shares_with_detail(params=filters)
 
         # verify response
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         for share in shares:
             self.assertEqual(filters['host'], share['host'])
 
@@ -286,7 +286,7 @@
         shares = self.shares_client.list_shares_with_detail(params=filters)
 
         # verify response
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         for share in shares:
             self.assertEqual(
                 filters['share_network_id'], share['share_network_id'])
@@ -301,7 +301,7 @@
         shares = self.shares_client.list_shares_with_detail(params=filters)
 
         # verify response
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         for share in shares:
             self.assertEqual(filters['snapshot_id'], share['snapshot_id'])
         self.assertFalse(self.shares[0]['id'] in [s['id'] for s in shares])
@@ -314,7 +314,7 @@
         shares = self.shares_client.list_shares_with_detail(params=filters)
 
         # verify response
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         sorted_list = [share['created_at'] for share in shares]
         self.assertEqual(sorted(sorted_list), sorted_list)
 
@@ -337,7 +337,7 @@
         # list shares by active status, at least one share is expected
         params = {"status": "available"}
         shares = self.shares_client.list_shares_with_detail(params)
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
         for share in shares:
             self.assertEqual(params["status"], share["status"])
 
@@ -353,7 +353,7 @@
         # non-admin user can get shares only from his project
         params = {"all_tenants": 1}
         shares = self.shares_client.list_shares_with_detail(params)
-        self.assertTrue(len(shares) > 0)
+        self.assertGreater(len(shares), 0)
 
         # get share with detailed info, we need its 'project_id'
         share = self.shares_client.get_share(self.shares[0]["id"])
@@ -533,7 +533,7 @@
             params=filters)
 
         # verify response
-        self.assertTrue(len(snaps) > 0)
+        self.assertGreater(len(snaps), 0)
         for snap in snaps:
             self.assertEqual(filters['status'], snap['status'])
             self.assertEqual(filters['name'], snap['name'])
@@ -549,7 +549,7 @@
             params=filters)
 
         # verify response
-        self.assertTrue(len(snaps) > 0)
+        self.assertGreater(len(snaps), 0)
         sorted_list = [snap['share_id'] for snap in snaps]
         self.assertEqual(sorted(sorted_list), sorted_list)
 
