diff --git a/tests-1.3/actions.py b/tests-1.3/actions.py
index d213beb..39369d0 100644
--- a/tests-1.3/actions.py
+++ b/tests-1.3/actions.py
@@ -24,9 +24,7 @@
     Output to a single port
     """
     def runTest(self):
-        ports = sorted(config["port_map"].keys())
-        in_port = ports[0]
-        out_port = ports[1]
+        in_port, out_port = openflow_ports(2)
 
         actions = [ofp.action.output(out_port)]
 
@@ -52,14 +50,15 @@
 
         logging.info("Sending packet, expecting output to port %d", out_port)
         self.dataplane.send(in_port, pktstr)
-        receive_pkt_check(self.dataplane, pktstr, [out_port], set(ports) - set([out_port]), self)
+        receive_pkt_check(self.dataplane, pktstr, [out_port],
+                          set(openflow_ports()) - set([out_port]), self)
 
 class OutputMultiple(base_tests.SimpleDataPlane):
     """
     Output to three ports
     """
     def runTest(self):
-        ports = sorted(config["port_map"].keys())
+        ports = openflow_ports(4)
         in_port = ports[0]
         out_ports = ports[1:4]
 
@@ -87,7 +86,8 @@
 
         logging.info("Sending packet, expecting output to ports %r", out_ports)
         self.dataplane.send(in_port, pktstr)
-        receive_pkt_check(self.dataplane, pktstr, out_ports, set(ports) - set(out_ports), self)
+        receive_pkt_check(self.dataplane, pktstr, out_ports,
+                          set(openflow_ports()) - set(out_ports), self)
 
 class BaseModifyPacketTest(base_tests.SimpleDataPlane):
     """
@@ -95,9 +95,7 @@
     """
 
     def verify_modify(self, actions, pkt, exp_pkt):
-        ports = sorted(config["port_map"].keys())
-        in_port = ports[0]
-        out_port = ports[1]
+        in_port, out_port = openflow_ports(2)
 
         actions = actions + [ofp.action.output(out_port)]
 
@@ -119,7 +117,8 @@
 
         logging.info("Sending packet, expecting output to port %d", out_port)
         self.dataplane.send(in_port, str(pkt))
-        receive_pkt_check(self.dataplane, str(exp_pkt), [out_port], set(ports) - set([out_port]), self)
+        receive_pkt_check(self.dataplane, str(exp_pkt), [out_port],
+                          set(openflow_ports()) - set([out_port]), self)
 
 class PushVlan(BaseModifyPacketTest):
     """
diff --git a/tests-1.3/match.py b/tests-1.3/match.py
index c8bf51d..c807ee8 100644
--- a/tests-1.3/match.py
+++ b/tests-1.3/match.py
@@ -34,9 +34,7 @@
         dicts mapping from string names (used in log messages) to string
         packet data.
         """
-        ports = sorted(config["port_map"].keys())
-        in_port = ports[0]
-        out_port = ports[1]
+        in_port, out_port = openflow_ports(2)
 
         logging.info("Running match test for %s", match.show())
 
@@ -89,10 +87,7 @@
     Match on ingress port
     """
     def runTest(self):
-        ports = sorted(config["port_map"].keys())
-        in_port = ports[0]
-        out_port = ports[1]
-        bad_port = ports[2]
+        in_port, out_port, bad_port = openflow_ports(3)
 
         match = ofp.match([
             ofp.oxm.in_port(in_port)
