Change how we represented that a test requires a backend.

This way is more extensible and requires less maintaince
diff --git a/pytest.ini b/pytest.ini
index 77e7396..0567f80 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -1,15 +1,5 @@
 [pytest]
 addopts = -r s
 markers =
-    cipher: this test requires a backend providing CipherBackend
-    cmac: this test requires a backend providing CMACBackend
-    dsa: this test requires a backend providing DSABackend
-    hash: this test requires a backend providing HashBackend
-    hmac: this test requires a backend providing HMACBackend
-    pbkdf2hmac: this test requires a backend providing PBKDF2HMACBackend
-    rsa: this test requires a backend providing RSABackend
-    traditional_openssl_serialization: this test requires a backend providing TraditionalOpenSSLSerializationBackend
-    pkcs8_serialization: this test requires a backend providing PKCS8SerializationBackend
+    requires_backend_interface: this test requires a specific backend interface
     supported: parametrized test requiring only_if and skip_message
-    elliptic: this test requires a backend providing EllipticCurveBackend
-    pem_serialization: this test requires a backend providing PEMSerializationBackend
diff --git a/tests/conftest.py b/tests/conftest.py
index b7981c9..7f8e71d 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -16,13 +16,8 @@
 import pytest
 
 from cryptography.hazmat.backends import _available_backends
-from cryptography.hazmat.backends.interfaces import (
-    CMACBackend, CipherBackend, DSABackend, EllipticCurveBackend, HMACBackend,
-    HashBackend, PBKDF2HMACBackend, PEMSerializationBackend,
-    PKCS8SerializationBackend, RSABackend,
-    TraditionalOpenSSLSerializationBackend
-)
-from .utils import check_backend_support, check_for_iface, select_backends
+
+from .utils import check_backend_support, select_backends
 
 
 def pytest_generate_tests(metafunc):
@@ -35,21 +30,17 @@
 
 @pytest.mark.trylast
 def pytest_runtest_setup(item):
-    check_for_iface("hmac", HMACBackend, item)
-    check_for_iface("cipher", CipherBackend, item)
-    check_for_iface("cmac", CMACBackend, item)
-    check_for_iface("hash", HashBackend, item)
-    check_for_iface("pbkdf2hmac", PBKDF2HMACBackend, item)
-    check_for_iface("dsa", DSABackend, item)
-    check_for_iface("rsa", RSABackend, item)
-    check_for_iface(
-        "traditional_openssl_serialization",
-        TraditionalOpenSSLSerializationBackend,
-        item
-    )
-    check_for_iface("pkcs8_serialization", PKCS8SerializationBackend, item)
-    check_for_iface("elliptic", EllipticCurveBackend, item)
-    check_for_iface("pem_serialization", PEMSerializationBackend, item)
+    required = item.keywords.get("requires_backend_interface")
+    if (
+        required is not None and
+        "backend" in item.funcargs and
+        not isinstance(item.funcargs["backend"], required.kwargs['interface'])
+    ):
+        pytest.skip("{0} backend does not support {1}".format(
+            item.funcargs["backend"],
+            required.kwargs['interface'].__name__
+        ))
+
     check_backend_support(item)
 
 
diff --git a/tests/hazmat/backends/test_openssl.py b/tests/hazmat/backends/test_openssl.py
index 3bea413..39708f8 100644
--- a/tests/hazmat/backends/test_openssl.py
+++ b/tests/hazmat/backends/test_openssl.py
@@ -24,6 +24,7 @@
 
 from cryptography import utils
 from cryptography.exceptions import InternalError, _Reasons
+from cryptography.hazmat.backends.interfaces import EllipticCurveBackend
 from cryptography.hazmat.backends.openssl.backend import (
     Backend, backend
 )
@@ -489,7 +490,7 @@
             _sn_to_elliptic_curve(backend, b"fake")
 
 
-@pytest.mark.elliptic
+@pytest.mark.requires_backend_interface(interface=EllipticCurveBackend)
 class TestDeprecatedECBackendMethods(object):
     def test_elliptic_curve_private_key_from_numbers(self):
         d = 5634846038258869671139984276180670841223409490498798721258
diff --git a/tests/hazmat/primitives/test_3des.py b/tests/hazmat/primitives/test_3des.py
index 6566038..cddacbd 100644
--- a/tests/hazmat/primitives/test_3des.py
+++ b/tests/hazmat/primitives/test_3des.py
@@ -22,6 +22,7 @@
 
 import pytest
 
+from cryptography.hazmat.backends.interfaces import CipherBackend
 from cryptography.hazmat.primitives.ciphers import algorithms, modes
 
 from .utils import generate_encrypt_test
@@ -34,7 +35,7 @@
     ),
     skip_message="Does not support TripleDES CBC",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestTripleDESModeCBC(object):
     test_KAT = generate_encrypt_test(
         load_nist_vectors,
@@ -71,7 +72,7 @@
     ),
     skip_message="Does not support TripleDES OFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestTripleDESModeOFB(object):
     test_KAT = generate_encrypt_test(
         load_nist_vectors,
@@ -108,7 +109,7 @@
     ),
     skip_message="Does not support TripleDES CFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestTripleDESModeCFB(object):
     test_KAT = generate_encrypt_test(
         load_nist_vectors,
@@ -145,7 +146,7 @@
     ),
     skip_message="Does not support TripleDES CFB8",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestTripleDESModeCFB8(object):
     test_KAT = generate_encrypt_test(
         load_nist_vectors,
@@ -182,7 +183,7 @@
     ),
     skip_message="Does not support TripleDES ECB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestTripleDESModeECB(object):
     test_KAT = generate_encrypt_test(
         load_nist_vectors,
diff --git a/tests/hazmat/primitives/test_aes.py b/tests/hazmat/primitives/test_aes.py
index e8e0eee..85e5da7 100644
--- a/tests/hazmat/primitives/test_aes.py
+++ b/tests/hazmat/primitives/test_aes.py
@@ -18,6 +18,7 @@
 
 import pytest
 
+from cryptography.hazmat.backends.interfaces import CipherBackend
 from cryptography.hazmat.primitives.ciphers import algorithms, base, modes
 
 from .utils import generate_aead_test, generate_encrypt_test
@@ -30,7 +31,7 @@
     ),
     skip_message="Does not support AES CBC",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestAESModeCBC(object):
     test_CBC = generate_encrypt_test(
         load_nist_vectors,
@@ -63,7 +64,7 @@
     ),
     skip_message="Does not support AES ECB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestAESModeECB(object):
     test_ECB = generate_encrypt_test(
         load_nist_vectors,
@@ -96,7 +97,7 @@
     ),
     skip_message="Does not support AES OFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestAESModeOFB(object):
     test_OFB = generate_encrypt_test(
         load_nist_vectors,
@@ -129,7 +130,7 @@
     ),
     skip_message="Does not support AES CFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestAESModeCFB(object):
     test_CFB = generate_encrypt_test(
         load_nist_vectors,
@@ -162,7 +163,7 @@
     ),
     skip_message="Does not support AES CFB8",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestAESModeCFB8(object):
     test_CFB8 = generate_encrypt_test(
         load_nist_vectors,
@@ -195,7 +196,7 @@
     ),
     skip_message="Does not support AES CTR",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestAESModeCTR(object):
     test_CTR = generate_encrypt_test(
         load_nist_vectors,
@@ -212,7 +213,7 @@
     ),
     skip_message="Does not support AES GCM",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestAESModeGCM(object):
     test_GCM = generate_aead_test(
         load_nist_vectors,
diff --git a/tests/hazmat/primitives/test_arc4.py b/tests/hazmat/primitives/test_arc4.py
index 33f7ff0..cd0da91 100644
--- a/tests/hazmat/primitives/test_arc4.py
+++ b/tests/hazmat/primitives/test_arc4.py
@@ -18,6 +18,7 @@
 
 import pytest
 
+from cryptography.hazmat.backends.interfaces import CipherBackend
 from cryptography.hazmat.primitives.ciphers import algorithms
 
 from .utils import generate_stream_encryption_test
@@ -30,7 +31,7 @@
     ),
     skip_message="Does not support ARC4",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestARC4(object):
     test_rfc = generate_stream_encryption_test(
         load_nist_vectors,
diff --git a/tests/hazmat/primitives/test_block.py b/tests/hazmat/primitives/test_block.py
index 022e3af..6ee230a 100644
--- a/tests/hazmat/primitives/test_block.py
+++ b/tests/hazmat/primitives/test_block.py
@@ -21,6 +21,7 @@
 from cryptography.exceptions import (
     AlreadyFinalized, _Reasons
 )
+from cryptography.hazmat.backends.interfaces import CipherBackend
 from cryptography.hazmat.primitives import interfaces
 from cryptography.hazmat.primitives.ciphers import (
     Cipher, algorithms, modes
@@ -45,7 +46,7 @@
     name = "dummy-cipher"
 
 
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestCipher(object):
     def test_creates_encryptor(self, backend):
         cipher = Cipher(
@@ -69,7 +70,7 @@
             Cipher(algorithm, mode=None, backend=backend)
 
 
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestCipherContext(object):
     def test_use_after_finalize(self, backend):
         cipher = Cipher(
@@ -146,7 +147,7 @@
     ),
     skip_message="Does not support AES GCM",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestAEADCipherContext(object):
     test_aead_exceptions = generate_aead_exception_test(
         algorithms.AES,
@@ -158,7 +159,7 @@
     )
 
 
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestModeValidation(object):
     def test_cbc(self, backend):
         with pytest.raises(ValueError):
diff --git a/tests/hazmat/primitives/test_blowfish.py b/tests/hazmat/primitives/test_blowfish.py
index 2801f43..c072a5c 100644
--- a/tests/hazmat/primitives/test_blowfish.py
+++ b/tests/hazmat/primitives/test_blowfish.py
@@ -18,6 +18,7 @@
 
 import pytest
 
+from cryptography.hazmat.backends.interfaces import CipherBackend
 from cryptography.hazmat.primitives.ciphers import algorithms, modes
 
 from .utils import generate_encrypt_test
@@ -30,7 +31,7 @@
     ),
     skip_message="Does not support Blowfish ECB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestBlowfishModeECB(object):
     test_ECB = generate_encrypt_test(
         load_nist_vectors,
@@ -47,7 +48,7 @@
     ),
     skip_message="Does not support Blowfish CBC",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestBlowfishModeCBC(object):
     test_CBC = generate_encrypt_test(
         load_nist_vectors,
@@ -64,7 +65,7 @@
     ),
     skip_message="Does not support Blowfish OFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestBlowfishModeOFB(object):
     test_OFB = generate_encrypt_test(
         load_nist_vectors,
@@ -81,7 +82,7 @@
     ),
     skip_message="Does not support Blowfish CFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestBlowfishModeCFB(object):
     test_CFB = generate_encrypt_test(
         load_nist_vectors,
diff --git a/tests/hazmat/primitives/test_camellia.py b/tests/hazmat/primitives/test_camellia.py
index 25bd0ff..f544d59 100644
--- a/tests/hazmat/primitives/test_camellia.py
+++ b/tests/hazmat/primitives/test_camellia.py
@@ -18,6 +18,7 @@
 
 import pytest
 
+from cryptography.hazmat.backends.interfaces import CipherBackend
 from cryptography.hazmat.primitives.ciphers import algorithms, modes
 
 from .utils import generate_encrypt_test
@@ -32,7 +33,7 @@
     ),
     skip_message="Does not support Camellia ECB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestCamelliaModeECB(object):
     test_ECB = generate_encrypt_test(
         load_cryptrec_vectors,
@@ -53,7 +54,7 @@
     ),
     skip_message="Does not support Camellia CBC",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestCamelliaModeCBC(object):
     test_CBC = generate_encrypt_test(
         load_nist_vectors,
@@ -70,7 +71,7 @@
     ),
     skip_message="Does not support Camellia OFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestCamelliaModeOFB(object):
     test_OFB = generate_encrypt_test(
         load_nist_vectors,
@@ -87,7 +88,7 @@
     ),
     skip_message="Does not support Camellia CFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestCamelliaModeCFB(object):
     test_CFB = generate_encrypt_test(
         load_nist_vectors,
diff --git a/tests/hazmat/primitives/test_cast5.py b/tests/hazmat/primitives/test_cast5.py
index 6022829..5c354cd 100644
--- a/tests/hazmat/primitives/test_cast5.py
+++ b/tests/hazmat/primitives/test_cast5.py
@@ -18,6 +18,7 @@
 
 import pytest
 
+from cryptography.hazmat.backends.interfaces import CipherBackend
 from cryptography.hazmat.primitives.ciphers import algorithms, modes
 
 from .utils import generate_encrypt_test
@@ -30,7 +31,7 @@
     ),
     skip_message="Does not support CAST5 ECB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestCAST5ModeECB(object):
     test_ECB = generate_encrypt_test(
         load_nist_vectors,
@@ -47,7 +48,7 @@
     ),
     skip_message="Does not support CAST5 CBC",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestCAST5ModeCBC(object):
     test_CBC = generate_encrypt_test(
         load_nist_vectors,
@@ -64,7 +65,7 @@
     ),
     skip_message="Does not support CAST5 OFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestCAST5ModeOFB(object):
     test_OFB = generate_encrypt_test(
         load_nist_vectors,
@@ -81,7 +82,7 @@
     ),
     skip_message="Does not support CAST5 CFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestCAST5ModeCFB(object):
     test_CFB = generate_encrypt_test(
         load_nist_vectors,
@@ -98,7 +99,7 @@
     ),
     skip_message="Does not support CAST5 CTR",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestCAST5ModeCTR(object):
     test_CTR = generate_encrypt_test(
         load_nist_vectors,
diff --git a/tests/hazmat/primitives/test_cmac.py b/tests/hazmat/primitives/test_cmac.py
index 7ec4af6..49e2043 100644
--- a/tests/hazmat/primitives/test_cmac.py
+++ b/tests/hazmat/primitives/test_cmac.py
@@ -52,7 +52,7 @@
 fake_key = b"\x00" * 16
 
 
-@pytest.mark.cmac
+@pytest.mark.requires_backend_interface(interface=CMACBackend)
 class TestCMAC(object):
     @pytest.mark.supported(
         only_if=lambda backend: backend.cmac_algorithm_supported(
diff --git a/tests/hazmat/primitives/test_dsa.py b/tests/hazmat/primitives/test_dsa.py
index 14b24d6..f0bbf14 100644
--- a/tests/hazmat/primitives/test_dsa.py
+++ b/tests/hazmat/primitives/test_dsa.py
@@ -19,6 +19,7 @@
 import pytest
 
 from cryptography.exceptions import AlreadyFinalized, InvalidSignature
+from cryptography.hazmat.backends.interfaces import DSABackend
 from cryptography.hazmat.primitives import hashes, interfaces
 from cryptography.hazmat.primitives.asymmetric import dsa
 from cryptography.utils import bit_length
@@ -32,7 +33,7 @@
 )
 
 
-@pytest.mark.dsa
+@pytest.mark.requires_backend_interface(interface=DSABackend)
 class TestDSA(object):
     def test_generate_dsa_parameters(self, backend):
         parameters = dsa.generate_parameters(1024, backend)
@@ -530,7 +531,7 @@
             ).public_key(backend)
 
 
-@pytest.mark.dsa
+@pytest.mark.requires_backend_interface(interface=DSABackend)
 class TestDSAVerification(object):
     _algorithms_dict = {
         'SHA1': hashes.SHA1,
@@ -594,7 +595,7 @@
             verifier.update(b"more data")
 
 
-@pytest.mark.dsa
+@pytest.mark.requires_backend_interface(interface=DSABackend)
 class TestDSASignature(object):
     _algorithms_dict = {
         'SHA1': hashes.SHA1,
diff --git a/tests/hazmat/primitives/test_ec.py b/tests/hazmat/primitives/test_ec.py
index 1b3bb9b..decb371 100644
--- a/tests/hazmat/primitives/test_ec.py
+++ b/tests/hazmat/primitives/test_ec.py
@@ -80,7 +80,7 @@
         return b"public_key"
 
 
-@pytest.mark.elliptic
+@pytest.mark.requires_backend_interface(interface=EllipticCurveBackend)
 def test_skip_curve_unsupported(backend):
     with pytest.raises(pytest.skip.Exception):
         _skip_curve_unsupported(backend, DummyCurve())
@@ -138,7 +138,7 @@
         )
 
 
-@pytest.mark.elliptic
+@pytest.mark.requires_backend_interface(interface=EllipticCurveBackend)
 class TestECWithNumbers(object):
     @pytest.mark.parametrize(
         ("vector", "hash_type"),
@@ -174,7 +174,7 @@
             assert curve_type().name == priv_num.public_numbers.curve.name
 
 
-@pytest.mark.elliptic
+@pytest.mark.requires_backend_interface(interface=EllipticCurveBackend)
 class TestECDSAVectors(object):
     @pytest.mark.parametrize(
         ("vector", "hash_type"),
diff --git a/tests/hazmat/primitives/test_hash_vectors.py b/tests/hazmat/primitives/test_hash_vectors.py
index ca97fc1..c54a610 100644
--- a/tests/hazmat/primitives/test_hash_vectors.py
+++ b/tests/hazmat/primitives/test_hash_vectors.py
@@ -17,6 +17,7 @@
 
 import pytest
 
+from cryptography.hazmat.backends.interfaces import HashBackend
 from cryptography.hazmat.primitives import hashes
 
 from .utils import generate_hash_test, generate_long_string_hash_test
@@ -27,7 +28,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.SHA1()),
     skip_message="Does not support SHA1",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestSHA1(object):
     test_SHA1 = generate_hash_test(
         load_hash_vectors,
@@ -44,7 +45,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.SHA224()),
     skip_message="Does not support SHA224",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestSHA224(object):
     test_SHA224 = generate_hash_test(
         load_hash_vectors,
@@ -61,7 +62,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.SHA256()),
     skip_message="Does not support SHA256",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestSHA256(object):
     test_SHA256 = generate_hash_test(
         load_hash_vectors,
@@ -78,7 +79,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.SHA384()),
     skip_message="Does not support SHA384",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestSHA384(object):
     test_SHA384 = generate_hash_test(
         load_hash_vectors,
@@ -95,7 +96,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.SHA512()),
     skip_message="Does not support SHA512",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestSHA512(object):
     test_SHA512 = generate_hash_test(
         load_hash_vectors,
@@ -112,7 +113,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.RIPEMD160()),
     skip_message="Does not support RIPEMD160",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestRIPEMD160(object):
     test_RIPEMD160 = generate_hash_test(
         load_hash_vectors,
@@ -133,7 +134,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.Whirlpool()),
     skip_message="Does not support Whirlpool",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestWhirlpool(object):
     test_whirlpool = generate_hash_test(
         load_hash_vectors,
@@ -156,7 +157,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.MD5()),
     skip_message="Does not support MD5",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestMD5(object):
     test_md5 = generate_hash_test(
         load_hash_vectors,
diff --git a/tests/hazmat/primitives/test_hashes.py b/tests/hazmat/primitives/test_hashes.py
index ffd65bd..ba4f53a 100644
--- a/tests/hazmat/primitives/test_hashes.py
+++ b/tests/hazmat/primitives/test_hashes.py
@@ -35,7 +35,7 @@
     name = "unsupported-dummy-hash"
 
 
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestHashContext(object):
     def test_hash_reject_unicode(self, backend):
         m = hashes.Hash(hashes.SHA1(), backend=backend)
@@ -81,7 +81,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.SHA1()),
     skip_message="Does not support SHA1",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestSHA1(object):
     test_SHA1 = generate_base_hash_test(
         hashes.SHA1(),
@@ -94,7 +94,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.SHA224()),
     skip_message="Does not support SHA224",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestSHA224(object):
     test_SHA224 = generate_base_hash_test(
         hashes.SHA224(),
@@ -107,7 +107,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.SHA256()),
     skip_message="Does not support SHA256",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestSHA256(object):
     test_SHA256 = generate_base_hash_test(
         hashes.SHA256(),
@@ -120,7 +120,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.SHA384()),
     skip_message="Does not support SHA384",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestSHA384(object):
     test_SHA384 = generate_base_hash_test(
         hashes.SHA384(),
@@ -133,7 +133,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.SHA512()),
     skip_message="Does not support SHA512",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestSHA512(object):
     test_SHA512 = generate_base_hash_test(
         hashes.SHA512(),
@@ -146,7 +146,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.RIPEMD160()),
     skip_message="Does not support RIPEMD160",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestRIPEMD160(object):
     test_RIPEMD160 = generate_base_hash_test(
         hashes.RIPEMD160(),
@@ -159,7 +159,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.Whirlpool()),
     skip_message="Does not support Whirlpool",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestWhirlpool(object):
     test_Whirlpool = generate_base_hash_test(
         hashes.Whirlpool(),
@@ -172,7 +172,7 @@
     only_if=lambda backend: backend.hash_supported(hashes.MD5()),
     skip_message="Does not support MD5",
 )
-@pytest.mark.hash
+@pytest.mark.requires_backend_interface(interface=HashBackend)
 class TestMD5(object):
     test_MD5 = generate_base_hash_test(
         hashes.MD5(),
diff --git a/tests/hazmat/primitives/test_hkdf.py b/tests/hazmat/primitives/test_hkdf.py
index 598f09f..9b5d963 100644
--- a/tests/hazmat/primitives/test_hkdf.py
+++ b/tests/hazmat/primitives/test_hkdf.py
@@ -22,13 +22,14 @@
 from cryptography.exceptions import (
     AlreadyFinalized, InvalidKey, _Reasons
 )
+from cryptography.hazmat.backends.interfaces import HMACBackend
 from cryptography.hazmat.primitives import hashes
 from cryptography.hazmat.primitives.kdf.hkdf import HKDF, HKDFExpand
 
 from ...utils import raises_unsupported_algorithm
 
 
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHKDF(object):
     def test_length_limit(self, backend):
         big_length = 255 * (hashes.SHA256().digest_size // 8) + 1
@@ -153,7 +154,7 @@
             hkdf.verify(b"foo", six.u("bar"))
 
 
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHKDFExpand(object):
     def test_derive(self, backend):
         prk = binascii.unhexlify(
diff --git a/tests/hazmat/primitives/test_hkdf_vectors.py b/tests/hazmat/primitives/test_hkdf_vectors.py
index 1e67234..f2399a3 100644
--- a/tests/hazmat/primitives/test_hkdf_vectors.py
+++ b/tests/hazmat/primitives/test_hkdf_vectors.py
@@ -17,6 +17,7 @@
 
 import pytest
 
+from cryptography.hazmat.backends.interfaces import HMACBackend
 from cryptography.hazmat.primitives import hashes
 
 from .utils import generate_hkdf_test
@@ -27,7 +28,7 @@
     only_if=lambda backend: backend.hmac_supported(hashes.SHA1()),
     skip_message="Does not support SHA1."
 )
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHKDFSHA1(object):
     test_HKDFSHA1 = generate_hkdf_test(
         load_nist_vectors,
@@ -41,7 +42,7 @@
     only_if=lambda backend: backend.hmac_supported(hashes.SHA256()),
     skip_message="Does not support SHA256."
 )
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHKDFSHA256(object):
     test_HKDFSHA1 = generate_hkdf_test(
         load_nist_vectors,
diff --git a/tests/hazmat/primitives/test_hmac.py b/tests/hazmat/primitives/test_hmac.py
index dca3eb0..baf8a29 100644
--- a/tests/hazmat/primitives/test_hmac.py
+++ b/tests/hazmat/primitives/test_hmac.py
@@ -39,14 +39,14 @@
     only_if=lambda backend: backend.hmac_supported(hashes.MD5()),
     skip_message="Does not support MD5",
 )
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHMACCopy(object):
     test_copy = generate_base_hmac_test(
         hashes.MD5(),
     )
 
 
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHMAC(object):
     def test_hmac_reject_unicode(self, backend):
         h = hmac.HMAC(b"mykey", hashes.SHA1(), backend=backend)
diff --git a/tests/hazmat/primitives/test_hmac_vectors.py b/tests/hazmat/primitives/test_hmac_vectors.py
index 2f88fb1..689628f 100644
--- a/tests/hazmat/primitives/test_hmac_vectors.py
+++ b/tests/hazmat/primitives/test_hmac_vectors.py
@@ -15,6 +15,7 @@
 
 import pytest
 
+from cryptography.hazmat.backends.interfaces import HMACBackend
 from cryptography.hazmat.primitives import hashes
 
 from .utils import generate_hmac_test
@@ -25,7 +26,7 @@
     only_if=lambda backend: backend.hmac_supported(hashes.MD5()),
     skip_message="Does not support MD5",
 )
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHMACMD5(object):
     test_hmac_md5 = generate_hmac_test(
         load_hash_vectors,
@@ -41,7 +42,7 @@
     only_if=lambda backend: backend.hmac_supported(hashes.SHA1()),
     skip_message="Does not support SHA1",
 )
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHMACSHA1(object):
     test_hmac_sha1 = generate_hmac_test(
         load_hash_vectors,
@@ -57,7 +58,7 @@
     only_if=lambda backend: backend.hmac_supported(hashes.SHA224()),
     skip_message="Does not support SHA224",
 )
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHMACSHA224(object):
     test_hmac_sha224 = generate_hmac_test(
         load_hash_vectors,
@@ -73,7 +74,7 @@
     only_if=lambda backend: backend.hmac_supported(hashes.SHA256()),
     skip_message="Does not support SHA256",
 )
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHMACSHA256(object):
     test_hmac_sha256 = generate_hmac_test(
         load_hash_vectors,
@@ -89,7 +90,7 @@
     only_if=lambda backend: backend.hmac_supported(hashes.SHA384()),
     skip_message="Does not support SHA384",
 )
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHMACSHA384(object):
     test_hmac_sha384 = generate_hmac_test(
         load_hash_vectors,
@@ -105,7 +106,7 @@
     only_if=lambda backend: backend.hmac_supported(hashes.SHA512()),
     skip_message="Does not support SHA512",
 )
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHMACSHA512(object):
     test_hmac_sha512 = generate_hmac_test(
         load_hash_vectors,
@@ -121,7 +122,7 @@
     only_if=lambda backend: backend.hmac_supported(hashes.RIPEMD160()),
     skip_message="Does not support RIPEMD160",
 )
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHMACRIPEMD160(object):
     test_hmac_ripemd160 = generate_hmac_test(
         load_hash_vectors,
diff --git a/tests/hazmat/primitives/test_idea.py b/tests/hazmat/primitives/test_idea.py
index de43925..0242dca 100644
--- a/tests/hazmat/primitives/test_idea.py
+++ b/tests/hazmat/primitives/test_idea.py
@@ -18,6 +18,7 @@
 
 import pytest
 
+from cryptography.hazmat.backends.interfaces import CipherBackend
 from cryptography.hazmat.primitives.ciphers import algorithms, modes
 
 from .utils import generate_encrypt_test
@@ -30,7 +31,7 @@
     ),
     skip_message="Does not support IDEA ECB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestIDEAModeECB(object):
     test_ECB = generate_encrypt_test(
         load_nist_vectors,
@@ -47,7 +48,7 @@
     ),
     skip_message="Does not support IDEA CBC",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestIDEAModeCBC(object):
     test_CBC = generate_encrypt_test(
         load_nist_vectors,
@@ -64,7 +65,7 @@
     ),
     skip_message="Does not support IDEA OFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestIDEAModeOFB(object):
     test_OFB = generate_encrypt_test(
         load_nist_vectors,
@@ -81,7 +82,7 @@
     ),
     skip_message="Does not support IDEA CFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestIDEAModeCFB(object):
     test_CFB = generate_encrypt_test(
         load_nist_vectors,
diff --git a/tests/hazmat/primitives/test_pbkdf2hmac_vectors.py b/tests/hazmat/primitives/test_pbkdf2hmac_vectors.py
index 149387b..7eed58a 100644
--- a/tests/hazmat/primitives/test_pbkdf2hmac_vectors.py
+++ b/tests/hazmat/primitives/test_pbkdf2hmac_vectors.py
@@ -15,6 +15,7 @@
 
 import pytest
 
+from cryptography.hazmat.backends.interfaces import PBKDF2HMACBackend
 from cryptography.hazmat.primitives import hashes
 
 from .utils import generate_pbkdf2_test
@@ -25,7 +26,7 @@
     only_if=lambda backend: backend.pbkdf2_hmac_supported(hashes.SHA1()),
     skip_message="Does not support SHA1 for PBKDF2HMAC",
 )
-@pytest.mark.pbkdf2hmac
+@pytest.mark.requires_backend_interface(interface=PBKDF2HMACBackend)
 class TestPBKDF2HMACSHA1(object):
     test_pbkdf2_sha1 = generate_pbkdf2_test(
         load_nist_vectors,
diff --git a/tests/hazmat/primitives/test_rsa.py b/tests/hazmat/primitives/test_rsa.py
index d1583e2..c3551e2 100644
--- a/tests/hazmat/primitives/test_rsa.py
+++ b/tests/hazmat/primitives/test_rsa.py
@@ -25,6 +25,7 @@
 from cryptography.exceptions import (
     AlreadyFinalized, InvalidSignature, _Reasons
 )
+from cryptography.hazmat.backends.interfaces import RSABackend
 from cryptography.hazmat.primitives import hashes, interfaces
 from cryptography.hazmat.primitives.asymmetric import padding, rsa
 from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicNumbers
@@ -85,7 +86,7 @@
     )
 
 
-@pytest.mark.rsa
+@pytest.mark.requires_backend_interface(interface=RSABackend)
 class TestRSA(object):
     @pytest.mark.parametrize(
         ("public_exponent", "key_size"),
@@ -170,7 +171,7 @@
         rsa.generate_private_key(65537, 2048, pretend_backend)
 
 
-@pytest.mark.rsa
+@pytest.mark.requires_backend_interface(interface=RSABackend)
 class TestRSASignature(object):
     @pytest.mark.supported(
         only_if=lambda backend: backend.rsa_padding_supported(
@@ -436,7 +437,7 @@
         signer.finalize()
 
 
-@pytest.mark.rsa
+@pytest.mark.requires_backend_interface(interface=RSABackend)
 class TestRSAVerification(object):
     @pytest.mark.supported(
         only_if=lambda backend: backend.rsa_padding_supported(
@@ -772,7 +773,7 @@
             verifier.verify()
 
 
-@pytest.mark.rsa
+@pytest.mark.requires_backend_interface(interface=RSABackend)
 class TestRSAPSSMGF1Verification(object):
     test_rsa_pss_mgf1_sha1 = pytest.mark.supported(
         only_if=lambda backend: backend.rsa_padding_supported(
@@ -900,7 +901,7 @@
     ))
 
 
-@pytest.mark.rsa
+@pytest.mark.requires_backend_interface(interface=RSABackend)
 class TestRSAPKCS1Verification(object):
     test_rsa_pkcs1v15_verify_sha1 = pytest.mark.supported(
         only_if=lambda backend: (
@@ -1050,7 +1051,7 @@
             )
 
 
-@pytest.mark.rsa
+@pytest.mark.requires_backend_interface(interface=RSABackend)
 class TestRSADecryption(object):
     @pytest.mark.supported(
         only_if=lambda backend: backend.rsa_padding_supported(
@@ -1191,7 +1192,7 @@
             )
 
 
-@pytest.mark.rsa
+@pytest.mark.requires_backend_interface(interface=RSABackend)
 class TestRSAEncryption(object):
     @pytest.mark.supported(
         only_if=lambda backend: backend.rsa_padding_supported(
@@ -1310,7 +1311,7 @@
             )
 
 
-@pytest.mark.rsa
+@pytest.mark.requires_backend_interface(interface=RSABackend)
 class TestRSANumbers(object):
     def test_rsa_public_numbers(self):
         public_numbers = rsa.RSAPublicNumbers(e=1, n=15)
diff --git a/tests/hazmat/primitives/test_seed.py b/tests/hazmat/primitives/test_seed.py
index 35f89e5..884c22f 100644
--- a/tests/hazmat/primitives/test_seed.py
+++ b/tests/hazmat/primitives/test_seed.py
@@ -18,6 +18,7 @@
 
 import pytest
 
+from cryptography.hazmat.backends.interfaces import CipherBackend
 from cryptography.hazmat.primitives.ciphers import algorithms, modes
 
 from .utils import generate_encrypt_test
@@ -30,7 +31,7 @@
     ),
     skip_message="Does not support SEED ECB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestSEEDModeECB(object):
     test_ECB = generate_encrypt_test(
         load_nist_vectors,
@@ -47,7 +48,7 @@
     ),
     skip_message="Does not support SEED CBC",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestSEEDModeCBC(object):
     test_CBC = generate_encrypt_test(
         load_nist_vectors,
@@ -64,7 +65,7 @@
     ),
     skip_message="Does not support SEED OFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestSEEDModeOFB(object):
     test_OFB = generate_encrypt_test(
         load_nist_vectors,
@@ -81,7 +82,7 @@
     ),
     skip_message="Does not support SEED CFB",
 )
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 class TestSEEDModeCFB(object):
     test_CFB = generate_encrypt_test(
         load_nist_vectors,
diff --git a/tests/hazmat/primitives/test_serialization.py b/tests/hazmat/primitives/test_serialization.py
index fc108d2..c2cb1b7 100644
--- a/tests/hazmat/primitives/test_serialization.py
+++ b/tests/hazmat/primitives/test_serialization.py
@@ -20,6 +20,10 @@
 import pytest
 
 from cryptography.exceptions import _Reasons
+from cryptography.hazmat.backends.interfaces import (
+    EllipticCurveBackend, PEMSerializationBackend, PKCS8SerializationBackend,
+    TraditionalOpenSSLSerializationBackend
+)
 from cryptography.hazmat.primitives import interfaces
 from cryptography.hazmat.primitives.asymmetric import ec
 from cryptography.hazmat.primitives.serialization import (
@@ -33,7 +37,7 @@
 from ...utils import raises_unsupported_algorithm
 
 
-@pytest.mark.pem_serialization
+@pytest.mark.requires_backend_interface(interface=PEMSerializationBackend)
 class TestPEMSerialization(object):
     def test_load_pem_rsa_private_key(self, backend):
         key = load_vectors_from_file(
@@ -67,7 +71,7 @@
             ("ec_private_key_encrypted.pem", b"123456"),
         ]
     )
-    @pytest.mark.elliptic
+    @pytest.mark.requires_backend_interface(interface=EllipticCurveBackend)
     def test_load_pem_ec_private_key(self, key_file, password, backend):
         _skip_curve_unsupported(backend, ec.SECP256R1())
         key = load_vectors_from_file(
@@ -121,7 +125,7 @@
         assert key
         assert isinstance(key, interfaces.DSAPublicKey)
 
-    @pytest.mark.elliptic
+    @pytest.mark.requires_backend_interface(interface=EllipticCurveBackend)
     def test_load_ec_public_key(self, backend):
         _skip_curve_unsupported(backend, ec.SECP256R1())
         key = load_vectors_from_file(
@@ -138,7 +142,9 @@
         assert key.curve.key_size == 256
 
 
-@pytest.mark.traditional_openssl_serialization
+@pytest.mark.requires_backend_interface(
+    interface=TraditionalOpenSSLSerializationBackend
+)
 class TestTraditionalOpenSSLSerialization(object):
     @pytest.mark.parametrize(
         ("key_file", "password"),
@@ -360,7 +366,7 @@
             )
 
 
-@pytest.mark.pkcs8_serialization
+@pytest.mark.requires_backend_interface(interface=PKCS8SerializationBackend)
 class TestPKCS8Serialization(object):
     @pytest.mark.parametrize(
         ("key_file", "password"),
@@ -401,7 +407,7 @@
             ("ec_private_key_encrypted.pem", b"123456"),
         ]
     )
-    @pytest.mark.elliptic
+    @pytest.mark.requires_backend_interface(interface=EllipticCurveBackend)
     def test_load_pem_ec_private_key(self, key_file, password, backend):
         _skip_curve_unsupported(backend, ec.SECP256R1())
         key = load_vectors_from_file(
diff --git a/tests/hazmat/primitives/twofactor/test_hotp.py b/tests/hazmat/primitives/twofactor/test_hotp.py
index 803f96f..92078e6 100644
--- a/tests/hazmat/primitives/twofactor/test_hotp.py
+++ b/tests/hazmat/primitives/twofactor/test_hotp.py
@@ -18,6 +18,7 @@
 import pytest
 
 from cryptography.exceptions import InvalidToken, _Reasons
+from cryptography.hazmat.backends.interfaces import HMACBackend
 from cryptography.hazmat.primitives import hashes
 from cryptography.hazmat.primitives.hashes import MD5, SHA1
 from cryptography.hazmat.primitives.twofactor.hotp import HOTP
@@ -34,7 +35,7 @@
     only_if=lambda backend: backend.hmac_supported(hashes.SHA1()),
     skip_message="Does not support HMAC-SHA1."
 )
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestHOTP(object):
     def test_invalid_key_length(self, backend):
         secret = os.urandom(10)
diff --git a/tests/hazmat/primitives/twofactor/test_totp.py b/tests/hazmat/primitives/twofactor/test_totp.py
index 518d3ce..6ad70ae 100644
--- a/tests/hazmat/primitives/twofactor/test_totp.py
+++ b/tests/hazmat/primitives/twofactor/test_totp.py
@@ -16,6 +16,7 @@
 import pytest
 
 from cryptography.exceptions import InvalidToken, _Reasons
+from cryptography.hazmat.backends.interfaces import HMACBackend
 from cryptography.hazmat.primitives import hashes
 from cryptography.hazmat.primitives.twofactor.totp import TOTP
 
@@ -27,7 +28,7 @@
     "twofactor/rfc-6238.txt", load_nist_vectors)
 
 
-@pytest.mark.hmac
+@pytest.mark.requires_backend_interface(interface=HMACBackend)
 class TestTOTP(object):
     @pytest.mark.supported(
         only_if=lambda backend: backend.hmac_supported(hashes.SHA1()),
diff --git a/tests/test_fernet.py b/tests/test_fernet.py
index 5c630b9..813ad88 100644
--- a/tests/test_fernet.py
+++ b/tests/test_fernet.py
@@ -26,6 +26,7 @@
 
 from cryptography.fernet import Fernet, InvalidToken, MultiFernet
 from cryptography.hazmat.backends import default_backend
+from cryptography.hazmat.backends.interfaces import CipherBackend
 from cryptography.hazmat.primitives.ciphers import algorithms, modes
 
 import cryptography_vectors
@@ -46,7 +47,7 @@
     assert f._backend is default_backend()
 
 
-@pytest.mark.cipher
+@pytest.mark.requires_backend_interface(interface=CipherBackend)
 @pytest.mark.supported(
     only_if=lambda backend: backend.cipher_supported(
         algorithms.AES("\x00" * 32), modes.CBC("\x00" * 16)
diff --git a/tests/test_utils.py b/tests/test_utils.py
index da3b1a2..6c8d088 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -27,12 +27,12 @@
 import cryptography_vectors
 
 from .utils import (
-    check_backend_support, check_for_iface, der_encode_dsa_signature,
-    load_cryptrec_vectors, load_fips_dsa_key_pair_vectors,
-    load_fips_dsa_sig_vectors, load_fips_ecdsa_key_pair_vectors,
-    load_fips_ecdsa_signing_vectors, load_hash_vectors, load_kasvs_dh_vectors,
-    load_nist_vectors, load_pkcs1_vectors, load_rsa_nist_vectors,
-    load_vectors_from_file, raises_unsupported_algorithm, select_backends
+    check_backend_support, der_encode_dsa_signature, load_cryptrec_vectors,
+    load_fips_dsa_key_pair_vectors, load_fips_dsa_sig_vectors,
+    load_fips_ecdsa_key_pair_vectors, load_fips_ecdsa_signing_vectors,
+    load_hash_vectors, load_kasvs_dh_vectors, load_nist_vectors,
+    load_pkcs1_vectors, load_rsa_nist_vectors, load_vectors_from_file,
+    raises_unsupported_algorithm, select_backends
 )
 
 
@@ -82,19 +82,6 @@
     assert selected_backends == [b1, b2]
 
 
-def test_check_for_iface():
-    item = pretend.stub(keywords=["fake_name"], funcargs={"backend": True})
-    with pytest.raises(pytest.skip.Exception) as exc_info:
-        check_for_iface("fake_name", FakeInterface, item)
-    assert exc_info.value.args[0] == "True backend does not support fake_name"
-
-    item = pretend.stub(
-        keywords=["fake_name"],
-        funcargs={"backend": FakeInterface()}
-    )
-    check_for_iface("fake_name", FakeInterface, item)
-
-
 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 5557ea8..bc5bc1e 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -55,14 +55,6 @@
         )
 
 
-def check_for_iface(name, iface, item):
-    if name in item.keywords and "backend" in item.funcargs:
-        if not isinstance(item.funcargs["backend"], iface):
-            pytest.skip("{0} backend does not support {1}".format(
-                item.funcargs["backend"], name
-            ))
-
-
 def check_backend_support(item):
     supported = item.keywords.get("supported")
     if supported and "backend" in item.funcargs: