diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4cde1bfb74cba5daf1c6a4b734edce8ad68a5cd6..f17004ec411232d60d08730ef8c81eb65005b518 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -37,7 +37,7 @@ test:
   script:
     - source venv/bin/activate
     - echo "GRANT ALL on *.* to '${MYSQL_USER}';"| mysql -u root --password="${MYSQL_ROOT_PASSWORD}" -h mysql
-    - pip install pytest-cov unittest-xml-reporting beautifulsoup4
+    - pip install pytest-cov
     - coverage run --source='.' manage.py test --settings AKPlanning.settings_ci
   after_script:
     - source venv/bin/activate
@@ -55,8 +55,6 @@ lint:
   extends: .before_script_template
   stage: test
   script:
-    - source venv/bin/activate
-    - pip install beautifulsoup4
     - pylint --load-plugins pylint_django --django-settings-module=AKPlanning.settings_ci --rcfile pylintrc --exit-zero --output-format=text AK* | tee /tmp/pylint.txt
     - sed -n 's/^Your code has been rated at \([-0-9.]*\)\/.*/\1/p' /tmp/pylint.txt > public/badges/$CI_JOB_NAME.score
     - pylint --load-plugins pylint_django --django-settings-module=AKPlanning.settings_ci --rcfile pylintrc --exit-zero --output-format=pylint_gitlab.GitlabCodeClimateReporter AK* > codeclimate.json
diff --git a/requirements.txt b/requirements.txt
index dc320c25b5f22c90f4b77e72f99c23e1e99b7513..1ef85e47a43c6efc1b86cdef0f159382b68ba023 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -26,3 +26,7 @@ sphinxcontrib-apidoc==0.5.0
 sphinxcontrib-django==2.5.0
 recommonmark==0.7.1
 django-docs==0.3.3
+
+# Testing
+unittest-xml-reporting==3.2.0
+beautifulsoup4==4.13.3