diff --git a/dev-requirements.txt b/dev-requirements.txt
index 752517d..530ada9 100644
--- a/dev-requirements.txt
+++ b/dev-requirements.txt
@@ -1,6 +1,7 @@
+coverage
 flake8
+iso8601
 pretend
 pytest
-coverage
 sphinx
 tox
diff --git a/tests/test_fernet.py b/tests/test_fernet.py
index 7bdfa3f..382a232 100644
--- a/tests/test_fernet.py
+++ b/tests/test_fernet.py
@@ -1,31 +1,49 @@
 import base64
+import calendar
+import json
+import os
+
+import iso8601
+
+import pytest
 
 import six
 
 from cryptography.fernet import Fernet
 
 
-class TestFernet(object):
-    def test_generate(self):
-        f = Fernet(base64.urlsafe_b64decode(
-            b"cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4="
-        ))
-        token = f._encrypt_from_parts(
-            b"hello",
-            499162800,
-            b"".join(map(six.int2byte, range(16))),
-        )
-        assert token == (b"gAAAAAAdwJ6wAAECAwQFBgcICQoLDA0ODy021cpGVWKZ_eEwCGM"
-                         b"4BLLF_5CV9dOPmrhuVUPgJobwOz7JcbmrR64jVmpU4IwqDA==")
+def json_parametrize(keys, path):
+    with open(path) as f:
+        data = json.load(f)
+    return pytest.mark.parametrize(keys, [
+        tuple([entry[k] for k in keys])
+        for entry in data
+    ])
 
-    def test_verify(self):
-        f = Fernet(base64.urlsafe_b64decode(
-            b"cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4="
-        ))
-        payload = f.decrypt(
-            (b"gAAAAAAdwJ6wAAECAwQFBgcICQoLDA0ODy021cpGVWKZ_eEwCGM4BLLF_5CV9dO"
-             b"PmrhuVUPgJobwOz7JcbmrR64jVmpU4IwqDA=="),
-            ttl=60,
-            current_time=499162801
+
+class TestFernet(object):
+    @json_parametrize(
+        ("secret", "now", "iv", "src", "token"),
+        os.path.join(os.path.dirname(__file__), "vectors", "fernet", "generate.json")
+    )
+    def test_generate(self, secret, now, iv, src, token):
+        f = Fernet(base64.urlsafe_b64decode(secret.encode("ascii")))
+        actual_token = f._encrypt_from_parts(
+            src.encode("ascii"),
+            calendar.timegm(iso8601.parse_date(now).utctimetuple()),
+            b"".join(map(six.int2byte, iv))
         )
-        assert payload == b"hello"
+        assert actual_token == token
+
+    @json_parametrize(
+        ("secret", "now", "src", "ttl_sec", "token"),
+        os.path.join(os.path.dirname(__file__), "vectors", "fernet", "verify.json")
+    )
+    def test_verify(self, secret, now, src, ttl_sec, token):
+        f = Fernet(base64.urlsafe_b64decode(secret.encode("ascii")))
+        payload = f.decrypt(
+            token.encode("ascii"),
+            ttl=ttl_sec,
+            current_time=calendar.timegm(iso8601.parse_date(now).utctimetuple())
+        )
+        assert payload == src
diff --git a/tests/vectors/fernet/generate.json b/tests/vectors/fernet/generate.json
new file mode 100644
index 0000000..d1f3e08
--- /dev/null
+++ b/tests/vectors/fernet/generate.json
@@ -0,0 +1,9 @@
+[
+  {
+    "token": "gAAAAAAdwJ6wAAECAwQFBgcICQoLDA0ODy021cpGVWKZ_eEwCGM4BLLF_5CV9dOPmrhuVUPgJobwOz7JcbmrR64jVmpU4IwqDA==",
+    "now": "1985-10-26T01:20:00-07:00",
+    "iv": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
+    "src": "hello",
+    "secret": "cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4="
+  }
+]
diff --git a/tests/vectors/fernet/verify.json b/tests/vectors/fernet/verify.json
new file mode 100644
index 0000000..08c480f
--- /dev/null
+++ b/tests/vectors/fernet/verify.json
@@ -0,0 +1,9 @@
+[
+  {
+    "token": "gAAAAAAdwJ6wAAECAwQFBgcICQoLDA0ODy021cpGVWKZ_eEwCGM4BLLF_5CV9dOPmrhuVUPgJobwOz7JcbmrR64jVmpU4IwqDA==",
+    "now": "1985-10-26T01:20:01-07:00",
+    "ttl_sec": 60,
+    "src": "hello",
+    "secret": "cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4="
+  }
+]
diff --git a/tox.ini b/tox.ini
index 92bcb75..57b4241 100644
--- a/tox.ini
+++ b/tox.ini
@@ -3,9 +3,10 @@
 
 [testenv]
 deps =
-    pytest
     coverage
+    iso8601
     pretend
+    pytest
 commands =
     coverage run --source=cryptography/,tests/ -m pytest
     coverage report -m --fail-under 100
