diff --git a/src/python/oftest/testutils.py b/src/python/oftest/testutils.py
index 9432ef9..05fbfa0 100644
--- a/src/python/oftest/testutils.py
+++ b/src/python/oftest/testutils.py
@@ -1687,4 +1687,33 @@
     if error:
         raise AssertionError("unexpected error type=%d code=%d" % (error.err_type, error.code))
 
+def verify_capability(test, capability):
+    """
+    Assert that the DUT supports the specified capability.
+
+    @param test Instance of base_tests.SimpleProtocol
+    @param capability One of ofp_capabilities.
+    """
+    logging.info("Verifing that capability code is valid.")
+    test.assertIn(capability, ofp.const.ofp_capabilities_map,
+                  "Capability code %d does not exist." % capability)
+    capability_str = ofp.const.ofp_capabilities_map[capability]
+    
+    logging.info(("Sending features_request to test if capability "
+                  "%s is supported.") % capability_str)
+    req = ofp.message.features_request()
+    res, raw = test.controller.transact(req)
+    test.assertIsNotNone(res, "Did not receive a response from the DUT.")
+    test.assertEqual(res.type, ofp.OFPT_FEATURES_REPLY,
+                     ("Unexpected packet type %d received in response to "
+                      "OFPT_FEATURES_REQUEST") % res.type)
+    logging.info("Received features_request.")
+    
+    logging.info("Verifying %s bit is set." % capability_str)
+    test.assertTrue((res.capabilities & capability) > 0,
+                    ("Capabilities bitmask does not support "
+                     "%s.") % capability_str)
+    logging.info(("Switch capabilities bitmask claims to support "
+                  "%s.") % capability_str)
+
 __all__ = list(set(locals()) - _import_blacklist)
