diff --git a/neutron_tempest_plugin/bgpvpn/base.py b/neutron_tempest_plugin/bgpvpn/base.py
index b436a5d..aeecbfc 100644
--- a/neutron_tempest_plugin/bgpvpn/base.py
+++ b/neutron_tempest_plugin/bgpvpn/base.py
@@ -72,13 +72,8 @@
     @classmethod
     def skip_checks(cls):
         super(BaseBgpvpnTest, cls).skip_checks()
-        msg = None
         if not utils.is_extension_enabled('bgpvpn', 'network'):
             msg = "Bgpvpn extension not enabled."
-        elif not CONF.bgpvpn.run_bgpvpn_tests:
-            msg = ("Running of bgpvpn related tests is disabled in "
-                   "plugin configuration.")
-        if msg:
             raise cls.skipException(msg)
 
     def create_bgpvpn(self, client, **kwargs):
diff --git a/neutron_tempest_plugin/config.py b/neutron_tempest_plugin/config.py
index 38d6ac6..cbf593d 100644
--- a/neutron_tempest_plugin/config.py
+++ b/neutron_tempest_plugin/config.py
@@ -165,15 +165,6 @@
     CONF.register_opt(opt, 'neutron_plugin_options')
 
 BgpvpnGroup = [
-    # TODO(tkajinam): This has been required since the plugin tests was merged
-    # into neutron-tempest-plugin in Train. Remove this after 2025.1 release.
-    cfg.BoolOpt('run_bgpvpn_tests',
-                default=True,
-                help=("If it is set to False bgpvpn api and scenario tests "
-                      "will be skipped"),
-                deprecated_for_removal=True,
-                deprecated_reason='Tests are skipped according to '
-                                  'the available extensions.'),
     cfg.IntOpt('min_asn',
                default=100,
                help=("Minimum number for the range of "
@@ -198,15 +189,6 @@
 CONF.register_opts(BgpvpnGroup, group="bgpvpn")
 
 FwaasGroup = [
-    # TODO(tkajinam): This has been required since the plugin tests was merged
-    # into neutron-tempest-plugin in Train. Remove this after 2025.1 release.
-    cfg.BoolOpt('run_fwaas_tests',
-                default=True,
-                help=("If it is set to False fwaas api and scenario tests "
-                      "will be skipped"),
-                deprecated_for_removal=True,
-                deprecated_reason='Tests are skipped according to '
-                                  'the available extensions.'),
     cfg.StrOpt('driver',
                default=None,
                choices=['openvswitch', 'ovn'],
@@ -218,22 +200,6 @@
 CONF.register_group(fwaas_group)
 CONF.register_opts(FwaasGroup, group="fwaas")
 
-SfcGroup = [
-    # TODO(tkajinam): This has been required since the plugin tests was merged
-    # into neutron-tempest-plugin in Train. Remove this after 2025.1 release.
-    cfg.BoolOpt('run_sfc_tests',
-                default=True,
-                help=("If it is set to False SFC api and scenario tests "
-                      "will be skipped"),
-                deprecated_for_removal=True,
-                deprecated_reason='Tests are skipped according to '
-                                  'the available extensions.'),
-]
-
-sfc_group = cfg.OptGroup(name="sfc", title=("Networking-sfc Service Options"))
-CONF.register_group(sfc_group)
-CONF.register_opts(SfcGroup, group="sfc")
-
 
 TaasGroup = [
     cfg.StrOpt('provider_physical_network',
diff --git a/neutron_tempest_plugin/fwaas/api/fwaas_v2_base.py b/neutron_tempest_plugin/fwaas/api/fwaas_v2_base.py
index f4f63ec..e54c643 100644
--- a/neutron_tempest_plugin/fwaas/api/fwaas_v2_base.py
+++ b/neutron_tempest_plugin/fwaas/api/fwaas_v2_base.py
@@ -21,13 +21,4 @@
 
 
 class BaseFWaaSTest(fwaas_v2_client.FWaaSClientMixin, base.BaseNetworkTest):
-
-    @classmethod
-    def skip_checks(cls):
-        super(BaseFWaaSTest, cls).skip_checks()
-        msg = None
-        if not CONF.fwaas.run_fwaas_tests:
-            msg = ("Running of fwaas related tests is disabled in "
-                   "plugin configuration.")
-        if msg:
-            raise cls.skipException(msg)
+    pass
diff --git a/neutron_tempest_plugin/fwaas/scenario/fwaas_v2_manager.py b/neutron_tempest_plugin/fwaas/scenario/fwaas_v2_manager.py
index 9cc0a6a..371a186 100644
--- a/neutron_tempest_plugin/fwaas/scenario/fwaas_v2_manager.py
+++ b/neutron_tempest_plugin/fwaas/scenario/fwaas_v2_manager.py
@@ -31,16 +31,6 @@
 
     credentials = ['primary']
 
-    @classmethod
-    def skip_checks(cls):
-        super(ScenarioTest, cls).skip_checks()
-        msg = None
-        if not CONF.fwaas.run_fwaas_tests:
-            msg = ("Running of fwaas related tests is disabled in "
-                   "plugin configuration.")
-        if msg:
-            raise cls.skipException(msg)
-
 
 class NetworkScenarioTest(ScenarioTest):
     """Base class for network scenario tests.
diff --git a/neutron_tempest_plugin/sfc/tests/api/base.py b/neutron_tempest_plugin/sfc/tests/api/base.py
index 606aed6..329bed8 100644
--- a/neutron_tempest_plugin/sfc/tests/api/base.py
+++ b/neutron_tempest_plugin/sfc/tests/api/base.py
@@ -34,16 +34,6 @@
 ):
 
     @classmethod
-    def skip_checks(cls):
-        super(BaseFlowClassifierTest, cls).skip_checks()
-        msg = None
-        if not CONF.sfc.run_sfc_tests:
-            msg = ("Running of SFC related tests is disabled in "
-                   "plugin configuration.")
-        if msg:
-            raise cls.skipException(msg)
-
-    @classmethod
     def resource_setup(cls):
         super(BaseFlowClassifierTest, cls).resource_setup()
         if not utils.is_extension_enabled('flow_classifier', 'network'):
diff --git a/neutron_tempest_plugin/sfc/tests/scenario/base.py b/neutron_tempest_plugin/sfc/tests/scenario/base.py
index 44b5cd2..5945aef 100644
--- a/neutron_tempest_plugin/sfc/tests/scenario/base.py
+++ b/neutron_tempest_plugin/sfc/tests/scenario/base.py
@@ -31,16 +31,6 @@
     manager.NetworkScenarioTest
 ):
 
-    @classmethod
-    def skip_checks(cls):
-        super(SfcScenarioTest, cls).skip_checks()
-        msg = None
-        if not CONF.sfc.run_sfc_tests:
-            msg = ("Running of SFC related tests is disabled in "
-                   "plugin configuration.")
-        if msg:
-            raise cls.skipException(msg)
-
     def _check_connectivity(
         self, source_ip, destination_ip, routes=None,
         username=None, private_key=None
diff --git a/releasenotes/notes/remove-run-tests-opts-152c092bee1dc81d.yaml b/releasenotes/notes/remove-run-tests-opts-152c092bee1dc81d.yaml
new file mode 100644
index 0000000..bd3fb45
--- /dev/null
+++ b/releasenotes/notes/remove-run-tests-opts-152c092bee1dc81d.yaml
@@ -0,0 +1,8 @@
+---
+upgrade:
+  - |
+    The following options have been removed.
+
+    - ``[bgpvpn] run_bgpvpn_tests``
+    - ``[fwaas] run_fwaas_tests``
+    - ``[sfc] run_sfc_tests``
