diff --git a/octavia_tempest_plugin/tests/api/v2/test_member.py b/octavia_tempest_plugin/tests/api/v2/test_member.py
index ec3fc10..610363b 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_member.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_member.py
@@ -144,13 +144,10 @@
             const.ADDRESS: member_address,
             const.PROTOCOL_PORT: 80,
             const.WEIGHT: 50,
+            const.MONITOR_ADDRESS: member_monitor_address,
+            const.MONITOR_PORT: 8080,
         }
         provider = CONF.load_balancer.provider
-        if provider != 'tungstenfabric':
-            member_kwargs.update({
-                const.MONITOR_ADDRESS: member_monitor_address,
-                const.MONITOR_PORT: 8080,
-            })
         if self.mem_member_client.is_version_supported(
                 self.api_version, '2.1') and provider != 'tungstenfabric':
             member_kwargs.update({
@@ -469,13 +466,10 @@
             const.ADDRESS: '192.0.2.1',
             const.PROTOCOL_PORT: 81,
             const.WEIGHT: 50,
+            const.MONITOR_ADDRESS: '192.0.2.2',
+            const.MONITOR_PORT: 8080,
         }
         provider = CONF.load_balancer.provider
-        if provider != 'tungstenfabric':
-            member_kwargs.update({
-                const.MONITOR_ADDRESS: '192.0.2.2',
-                const.MONITOR_PORT: 8080,
-            })
         if self.mem_member_client.is_version_supported(
                 self.api_version, '2.1') and provider != 'tungstenfabric':
             member_kwargs.update({
@@ -577,13 +571,10 @@
             const.ADDRESS: '192.0.2.1',
             const.PROTOCOL_PORT: 82,
             const.WEIGHT: 50,
+            const.MONITOR_ADDRESS: '192.0.2.2',
+            const.MONITOR_PORT: 8080,
         }
         provider = CONF.load_balancer.provider
-        if provider != 'tungstenfabric':
-            member_kwargs.update({
-                const.MONITOR_ADDRESS: '192.0.2.2',
-                const.MONITOR_PORT: 8080,
-            })
         if self.mem_member_client.is_version_supported(
                 self.api_version, '2.1') and provider != 'tungstenfabric':
             member_kwargs.update({
@@ -615,7 +606,8 @@
             CONF.load_balancer.build_timeout,
             pool_id=self.pool_id)
         status = const.OFFLINE
-        if not monitor or CONF.load_balancer.test_with_noop:
+        if (not monitor or CONF.load_balancer.test_with_noop) and \
+                provider != 'tungstenfabric':
             status = const.NO_MONITOR
         member = waiters.wait_for_status(
             self.mem_member_client.show_member,
@@ -636,7 +628,7 @@
                 self.api_version, '2.1') and provider != 'tungstenfabric':
             equal_items.append(const.BACKUP)
 
-        if monitor and provider != 'tungstenfabric':
+        if monitor:
             equal_items += [const.MONITOR_ADDRESS, const.MONITOR_PORT]
         if const.SUBNET_ID in member_kwargs:
             equal_items.append(const.SUBNET_ID)
