diff --git a/tests/conftest.py b/tests/conftest.py
index 66a3cd6..c21f4dc 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -8,30 +8,28 @@
 
 from cryptography.hazmat.backends.openssl import backend as openssl_backend
 
-from .utils import check_backend_support, skip_if_empty
+from .utils import check_backend_support
 
 
 def pytest_report_header(config):
     return "OpenSSL: {0}".format(openssl_backend.openssl_version_text())
 
 
-def pytest_generate_tests(metafunc):
-    if "backend" in metafunc.fixturenames:
-        filtered_backends = []
-        required_interfaces = [
-            mark.kwargs["interface"]
-            for mark in metafunc.function.requires_backend_interface
-        ]
-        if all(
-            isinstance(openssl_backend, iface) for iface in required_interfaces
-        ):
-            filtered_backends.append(openssl_backend)
-
-        # If you pass an empty list to parametrize Bad Things(tm) happen
-        # as of pytest 2.6.4 when the test also has a parametrize decorator
-        skip_if_empty(filtered_backends, required_interfaces)
-
-        metafunc.parametrize("backend", filtered_backends)
+@pytest.fixture()
+def backend(request):
+    required_interfaces = [
+        mark.kwargs["interface"]
+        for mark in request.node.get_marker("requires_backend_interface")
+    ]
+    if all(
+        isinstance(openssl_backend, iface) for iface in required_interfaces
+    ):
+        return openssl_backend
+    pytest.skip(
+        "OpenSSL doesn't implement required interfaces: {0}".format(
+            required_interfaces
+        )
+    )
 
 
 @pytest.mark.trylast
diff --git a/tests/test_utils.py b/tests/test_utils.py
index 1637ba5..2b5a2af 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -24,21 +24,10 @@
     load_hash_vectors, load_kasvs_dh_vectors,
     load_kasvs_ecdh_vectors, load_nist_kbkdf_vectors, load_nist_vectors,
     load_pkcs1_vectors, load_rsa_nist_vectors, load_vectors_from_file,
-    load_x963_vectors, raises_unsupported_algorithm, skip_if_empty
+    load_x963_vectors, raises_unsupported_algorithm
 )
 
 
-class FakeInterface(object):
-    pass
-
-
-def test_skip_if_empty():
-    with pytest.raises(pytest.skip.Exception):
-        skip_if_empty([], [FakeInterface])
-
-    skip_if_empty(["notempty"], [FakeInterface])
-
-
 def test_check_backend_support_skip():
     supported = pretend.stub(
         kwargs={"only_if": lambda backend: False, "skip_message": "Nope"}
diff --git a/tests/utils.py b/tests/utils.py
index 44e16a5..136b060 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -25,15 +25,6 @@
 )
 
 
-def skip_if_empty(backend_list, required_interfaces):
-    if not backend_list:
-        pytest.skip(
-            "No backends provided supply the interface: {0}".format(
-                ", ".join(iface.__name__ for iface in required_interfaces)
-            )
-        )
-
-
 def check_backend_support(item):
     supported = item.keywords.get("supported")
     if supported and "backend" in item.funcargs:
