diff --git a/Makefile b/Makefile
index 4d22aba456d5b14e26ddd21445f285e19308e0b4..03bb6a54e9823f3e82e950b8c4d0f7caed2b68af 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@ init-env:
 	python3 -m venv .env
 
 install:
-	pip install --upgrade -r requirements.txt
+	pip install --upgrade -r requirements.txt -r test-requirements.txt
 	pip install -e .
 
 run:
diff --git a/requirements.in b/requirements.in
index 01e78a0c0c973ac7013ca47f0d2bd88613ff2a57..443ff41770ea32e01a9094f1d79c881e7cff8081 100644
--- a/requirements.in
+++ b/requirements.in
@@ -4,14 +4,10 @@ graphene-django
 elasticsearch-dsl==6.1.0
 django-elasticsearch-dsl
 django-extensions
-pytest
-pytest-django
-pytest-env
 oic
 pyjwt
 iso8601
 arrow
 bleach
-snapshottest
 psycopg2
 dsnparse
diff --git a/requirements.txt b/requirements.txt
index 09775d6cf321be0209a7351c29b65357d1c79485..37a09a9513a7cae20e3a2aa5b8f264b15765fe14 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -8,8 +8,6 @@ alabaster==0.7.12         # via oic
 aniso8601==3.0.2          # via graphene
 arrow==0.12.1
 asn1crypto==0.24.0        # via cryptography
-atomicwrites==1.2.1       # via pytest
-attrs==18.2.0             # via pytest
 beaker==1.10.0            # via oic
 bleach==3.0.2
 certifi==2018.10.15       # via requests
@@ -32,27 +30,19 @@ ipaddress==1.0.22         # via elasticsearch-dsl
 iso8601==0.1.12
 mako==1.0.7               # via oic
 markupsafe==1.0           # via mako
-more-itertools==4.3.0     # via pytest
 oic==0.14.0
-pluggy==0.7.1             # via pytest
 promise==2.2.1            # via graphene, graphene-django, graphql-core, graphql-relay
 psycopg2==2.7.5
-py==1.7.0                 # via pytest
 pycparser==2.19           # via cffi
 pycryptodomex==3.6.6      # via oic, pyjwkest
 pyjwkest==1.4.0           # via oic
 pyjwt==1.6.4
 pyopenssl==18.0.0         # via oic
-pytest-django==3.4.3
-pytest-env==0.6.2
-pytest==3.8.2
 python-dateutil==2.7.3    # via arrow, elasticsearch-dsl
 pytz==2018.5              # via django
-requests==2.19.1          # via oic, pyjwkest
+requests==2.20.0          # via oic, pyjwkest
 rx==1.6.1                 # via graphql-core
 singledispatch==3.4.0.3   # via graphene-django
-six==1.11.0               # via bleach, cryptography, django-extensions, elasticsearch-dsl, graphene, graphene-django, graphql-core, graphql-relay, more-itertools, oic, promise, pyjwkest, pyopenssl, pytest, python-dateutil, singledispatch, snapshottest
-snapshottest==0.5.0
-termcolor==1.1.0          # via snapshottest
-urllib3==1.23             # via elasticsearch, requests
+six==1.11.0               # via bleach, cryptography, django-extensions, elasticsearch-dsl, graphene, graphene-django, graphql-core, graphql-relay, oic, promise, pyjwkest, pyopenssl, python-dateutil, singledispatch
+urllib3==1.24             # via elasticsearch, requests
 webencodings==0.5.1       # via bleach
diff --git a/test-requirements.in b/test-requirements.in
new file mode 100644
index 0000000000000000000000000000000000000000..ad6877d850d8d9f29e0bc10d9091da0171b71941
--- /dev/null
+++ b/test-requirements.in
@@ -0,0 +1,5 @@
+pytest
+pytest-django
+pytest-env
+pytest-factoryboy
+snapshottest
diff --git a/test-requirements.txt b/test-requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fa4ed41d8358e7e21ff6029f87aa07783e726cef
--- /dev/null
+++ b/test-requirements.txt
@@ -0,0 +1,23 @@
+#
+# This file is autogenerated by pip-compile
+# To update, run:
+#
+#    pip-compile --output-file test-requirements.txt test-requirements.in
+#
+atomicwrites==1.2.1       # via pytest
+attrs==18.2.0             # via pytest
+factory-boy==2.11.1       # via pytest-factoryboy
+faker==0.9.2              # via factory-boy
+inflection==0.3.1         # via pytest-factoryboy
+more-itertools==4.3.0     # via pytest
+pluggy==0.8.0             # via pytest
+py==1.7.0                 # via pytest
+pytest-django==3.4.3
+pytest-env==0.6.2
+pytest-factoryboy==2.0.1
+pytest==3.9.1
+python-dateutil==2.7.3    # via faker
+six==1.11.0               # via faker, more-itertools, pytest, python-dateutil, snapshottest
+snapshottest==0.5.0
+termcolor==1.1.0          # via snapshottest
+text-unidecode==1.2       # via faker