diff --git a/neutron_tempest_plugin/api/test_dhcp_ipv6.py b/neutron_tempest_plugin/api/test_dhcp_ipv6.py
index 3a7db96..69b4ea0 100644
--- a/neutron_tempest_plugin/api/test_dhcp_ipv6.py
+++ b/neutron_tempest_plugin/api/test_dhcp_ipv6.py
@@ -50,8 +50,8 @@
     def _remove_from_list_by_index(self, things_list, elem):
         for index, i in enumerate(things_list):
             if i['id'] == elem['id']:
-                break
-        del things_list[index]
+                del things_list[index]
+                return
 
     def _clean_network(self):
         body = self.client.list_ports()
diff --git a/neutron_tempest_plugin/api/test_qos.py b/neutron_tempest_plugin/api/test_qos.py
index ba7aad8..d31eab8 100644
--- a/neutron_tempest_plugin/api/test_qos.py
+++ b/neutron_tempest_plugin/api/test_qos.py
@@ -585,7 +585,7 @@
 
 
 class QosBandwidthLimitRuleWithDirectionTestJSON(
-    QosBandwidthLimitRuleTestJSON):
+        QosBandwidthLimitRuleTestJSON):
 
     required_extensions = (
         QosBandwidthLimitRuleTestJSON.required_extensions +
diff --git a/neutron_tempest_plugin/api/test_timestamp.py b/neutron_tempest_plugin/api/test_timestamp.py
index 4d2d32a..769d7cc 100644
--- a/neutron_tempest_plugin/api/test_timestamp.py
+++ b/neutron_tempest_plugin/api/test_timestamp.py
@@ -27,7 +27,7 @@
 
     required_extensions = ["standard-attr-timestamp"]
 
-    ## attributes for subnetpool
+    # attributes for subnetpool
     min_prefixlen = '28'
     max_prefixlen = '31'
     _ip_version = 4
diff --git a/neutron_tempest_plugin/config.py b/neutron_tempest_plugin/config.py
index d6db315..65282cf 100644
--- a/neutron_tempest_plugin/config.py
+++ b/neutron_tempest_plugin/config.py
@@ -43,6 +43,10 @@
                help='Max number of networks per project. '
                     'Configure this only when project is limited with real '
                     'vlans in deployment.'),
+    cfg.StrOpt('l3_agent_mode',
+               help='The agent mode for L3 agents in the deployment. '
+                    'Configure this only when the single value is used by '
+                    'all agents in the deployment.'),
 ]
 
 # TODO(amuller): Redo configuration options registration as part of the planned
diff --git a/neutron_tempest_plugin/scenario/test_dvr.py b/neutron_tempest_plugin/scenario/test_dvr.py
index b1cba5a..fa2e9d4 100644
--- a/neutron_tempest_plugin/scenario/test_dvr.py
+++ b/neutron_tempest_plugin/scenario/test_dvr.py
@@ -14,6 +14,7 @@
 #    under the License.
 from tempest.common import utils
 from tempest.lib import decorators
+import testtools
 
 from neutron_lib import constants
 from neutron_tempest_plugin import config
@@ -54,6 +55,9 @@
         super(NetworkDvrTest, cls).skip_checks()
 
     @decorators.idempotent_id('3d73ec1a-2ec6-45a9-b0f8-04a283d9d344')
+    @testtools.skipUnless(
+        CONF.neutron_plugin_options.l3_agent_mode == 'dvr_snat',
+        "Need dvr_snat agent mode assumption.")
     def test_vm_reachable_through_compute(self):
         """Check that the VM is reachable through compute node.
 
diff --git a/neutron_tempest_plugin/scenario/test_migration.py b/neutron_tempest_plugin/scenario/test_migration.py
index 62c3642..4f9c0f3 100644
--- a/neutron_tempest_plugin/scenario/test_migration.py
+++ b/neutron_tempest_plugin/scenario/test_migration.py
@@ -19,11 +19,15 @@
 from neutron_lib import constants as const
 from tempest.common import utils
 from tempest.lib import decorators
+import testtools
 
 from neutron_tempest_plugin.common import utils as common_utils
+from neutron_tempest_plugin import config
 from neutron_tempest_plugin.scenario import base
 from neutron_tempest_plugin.scenario import test_dvr
 
+CONF = config.CONF
+
 
 class NetworkMigrationTestBase(base.BaseTempestTestCase,
                                test_dvr.NetworkTestMixin):
@@ -131,6 +135,9 @@
 class NetworkMigrationFromLegacy(NetworkMigrationTestBase):
 
     @decorators.idempotent_id('23724222-483a-4129-bc15-7a9278f3828b')
+    @testtools.skipUnless(
+        CONF.neutron_plugin_options.l3_agent_mode == 'dvr_snat',
+        "Need dvr_snat agent mode assumption.")
     def test_from_legacy_to_dvr(self):
         self._test_migration(before_dvr=False, before_ha=False,
                              after_dvr=True, after_ha=False)
@@ -141,6 +148,9 @@
                              after_dvr=False, after_ha=True)
 
     @decorators.idempotent_id('fe169f2c-6ed3-4eb0-8afe-2d540c4b49e2')
+    @testtools.skipUnless(
+        CONF.neutron_plugin_options.l3_agent_mode == 'dvr_snat',
+        "Need dvr_snat agent mode assumption.")
     def test_from_legacy_to_dvr_ha(self):
         self._test_migration(before_dvr=False, before_ha=False,
                              after_dvr=True, after_ha=True)
@@ -154,11 +164,17 @@
                              after_dvr=False, after_ha=False)
 
     @decorators.idempotent_id('42260eea-5d56-4d30-b62a-a62694dfe4d5')
+    @testtools.skipUnless(
+        CONF.neutron_plugin_options.l3_agent_mode == 'dvr_snat',
+        "Need dvr_snat agent mode assumption.")
     def test_from_ha_to_dvr(self):
         self._test_migration(before_dvr=False, before_ha=True,
                              after_dvr=True, after_ha=False)
 
     @decorators.idempotent_id('e4149576-248b-43fa-9d0b-a5c2f51967ce')
+    @testtools.skipUnless(
+        CONF.neutron_plugin_options.l3_agent_mode == 'dvr_snat',
+        "Need dvr_snat agent mode assumption.")
     def test_from_ha_to_dvr_ha(self):
         self._test_migration(before_dvr=False, before_ha=True,
                              after_dvr=True, after_ha=True)
@@ -167,16 +183,25 @@
 class NetworkMigrationFromDVR(NetworkMigrationTestBase):
 
     @decorators.idempotent_id('e5cac02c-248d-4aac-bd5e-9d47c5197307')
+    @testtools.skipUnless(
+        CONF.neutron_plugin_options.l3_agent_mode == 'dvr_snat',
+        "Need dvr_snat agent mode assumption.")
     def test_from_dvr_to_legacy(self):
         self._test_migration(before_dvr=True, before_ha=False,
                              after_dvr=False, after_ha=False)
 
     @decorators.idempotent_id('a00d5ad7-8509-4bb0-bdd2-7f1ee052d1cd')
+    @testtools.skipUnless(
+        CONF.neutron_plugin_options.l3_agent_mode == 'dvr_snat',
+        "Need dvr_snat agent mode assumption.")
     def test_from_dvr_to_ha(self):
         self._test_migration(before_dvr=True, before_ha=False,
                              after_dvr=False, after_ha=True)
 
     @decorators.idempotent_id('25304a51-93a8-4cf3-9523-bce8b4eaecf8')
+    @testtools.skipUnless(
+        CONF.neutron_plugin_options.l3_agent_mode == 'dvr_snat',
+        "Need dvr_snat agent mode assumption.")
     def test_from_dvr_to_dvr_ha(self):
         self._test_migration(before_dvr=True, before_ha=False,
                              after_dvr=True, after_ha=True)
@@ -185,16 +210,25 @@
 class NetworkMigrationFromDVRHA(NetworkMigrationTestBase):
 
     @decorators.idempotent_id('1be9b2e2-379c-40a4-a269-6687b81df691')
+    @testtools.skipUnless(
+        CONF.neutron_plugin_options.l3_agent_mode == 'dvr_snat',
+        "Need dvr_snat agent mode assumption.")
     def test_from_dvr_ha_to_legacy(self):
         self._test_migration(before_dvr=True, before_ha=True,
                              after_dvr=False, after_ha=False)
 
     @decorators.idempotent_id('55957267-4e84-4314-a2f7-7cd36a2df04b')
+    @testtools.skipUnless(
+        CONF.neutron_plugin_options.l3_agent_mode == 'dvr_snat',
+        "Need dvr_snat agent mode assumption.")
     def test_from_dvr_ha_to_ha(self):
         self._test_migration(before_dvr=True, before_ha=True,
                              after_dvr=False, after_ha=True)
 
     @decorators.idempotent_id('d6bedff1-72be-4a9a-8ea2-dc037cd838e0')
+    @testtools.skipUnless(
+        CONF.neutron_plugin_options.l3_agent_mode == 'dvr_snat',
+        "Need dvr_snat agent mode assumption.")
     def test_from_dvr_ha_to_dvr(self):
         self._test_migration(before_dvr=True, before_ha=True,
                              after_dvr=True, after_ha=False)
diff --git a/tox.ini b/tox.ini
index c16664d..06eda94 100644
--- a/tox.ini
+++ b/tox.ini
@@ -44,14 +44,11 @@
 # H404 multi line docstring should start with a summary
 # H405 multi line docstring summary not separated with an empty line
 # N530 direct neutron imports not allowed
-# TODO(ihrachys) figure out what to do with N534 and N536
-# N534 Untranslated exception message
-# N536 Use assertIsNone rather than assertEqual to check for None values
-ignore = E125,E126,E128,E129,E265,H404,H405,N530,N534,N536
+ignore = E125,E126,E128,E129,E265,H404,H405,N530
 # H106: Don't put vim configuration in source files
 # H203: Use assertIs(Not)None to check for None
 # H904: Delay string interpolations at logging calls
-enable-extensions=H106,H203,H904
+enable-extensions = H106,H203,H904
 show-source = true
-exclude = ./.*,build,dist,doc
+exclude = ./.*,build,dist,doc,*egg*,releasenotes
 import-order-style = pep8
