update pytest config (#4463)

* update pytest config

pytest 3.8.0 was just released and officially deprecates some of the way
we do pytest marks. They introduced a new way to do this in 3.6 so this
PR switches to that mechanism and updates our minimum pytest requirement

* update the stubs

* also update wycheproof test config to remove deprecated paths

* don't need this any more
diff --git a/setup.py b/setup.py
index 8bd31bd..0c793e3 100644
--- a/setup.py
+++ b/setup.py
@@ -54,7 +54,7 @@
         )
 
 test_requirements = [
-    "pytest>=3.2.1,!=3.3.0",
+    "pytest>=3.6.0",
     "pretend",
     "iso8601",
     "pytz",
diff --git a/tests/conftest.py b/tests/conftest.py
index 583c409..d858b4f 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -27,7 +27,8 @@
         skip_if_wycheproof_none(wycheproof)
 
         testcases = []
-        for path in metafunc.function.wycheproof_tests.args:
+        marker = metafunc.definition.get_closest_marker("wycheproof_tests")
+        for path in marker.args:
             testcases.extend(load_wycheproof_tests(wycheproof, path))
         metafunc.parametrize("wycheproof", testcases)
 
@@ -36,7 +37,7 @@
 def backend(request):
     required_interfaces = [
         mark.kwargs["interface"]
-        for mark in request.node.get_marker("requires_backend_interface")
+        for mark in request.node.iter_markers("requires_backend_interface")
     ]
     if not all(
         isinstance(openssl_backend, iface) for iface in required_interfaces
diff --git a/tests/test_utils.py b/tests/test_utils.py
index 181d983..81656eb 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -32,7 +32,8 @@
     supported = pretend.stub(
         kwargs={"only_if": lambda backend: False, "skip_message": "Nope"}
     )
-    item = pretend.stub(keywords={"supported": [supported]})
+    node = pretend.stub(iter_markers=lambda x: [supported])
+    item = pretend.stub(node=node)
     with pytest.raises(pytest.skip.Exception) as exc_info:
         check_backend_support(True, item)
     assert exc_info.value.args[0] == "Nope (True)"
@@ -42,7 +43,8 @@
     supported = pretend.stub(
         kwargs={"only_if": lambda backend: True, "skip_message": "Nope"}
     )
-    item = pretend.stub(keywords={"supported": [supported]})
+    node = pretend.stub(iter_markers=lambda x: [supported])
+    item = pretend.stub(node=node)
     assert check_backend_support(None, item) is None
 
 
diff --git a/tests/utils.py b/tests/utils.py
index b950f8b..af7f766 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -28,13 +28,11 @@
 
 
 def check_backend_support(backend, item):
-    supported = item.keywords.get("supported")
-    if supported:
-        for mark in supported:
-            if not mark.kwargs["only_if"](backend):
-                pytest.skip("{0} ({1})".format(
-                    mark.kwargs["skip_message"], backend
-                ))
+    for mark in item.node.iter_markers("supported"):
+        if not mark.kwargs["only_if"](backend):
+            pytest.skip("{0} ({1})".format(
+                mark.kwargs["skip_message"], backend
+            ))
 
 
 @contextmanager