diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 27f1951e1acdb018e448be4a8a2b636274f34176..fb732fb07262d52a18b1a4c684c79fd471130019 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -143,7 +143,7 @@ test_api:
     - pip3 install -r requirements/local.txt
     - pip3 install -r requirements/test.txt
   script:
-    - pytest --cov-report xml --cov=funkwhale_api --junitxml=report.xml tests/
+    - pytest --cov-report xml --cov-report term-missing --cov=funkwhale_api --junitxml=report.xml tests/
   tags:
     - docker
   artifacts:
diff --git a/api/funkwhale_api/federation/factories.py b/api/funkwhale_api/federation/factories.py
index 574560f0df0dc8957438b108acfa06983cab8fea..51aef3afdaba50cc44af0affb84ac1cd2902ff59 100644
--- a/api/funkwhale_api/federation/factories.py
+++ b/api/funkwhale_api/federation/factories.py
@@ -98,7 +98,7 @@ def get_cached_key_pair():
 
 
 @registry.register
-class ActorFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
+class ActorFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
     public_key = None
     private_key = None
     preferred_username = factory.Faker("user_name")
@@ -154,7 +154,7 @@ class ActorFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
 
 
 @registry.register
-class FollowFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
+class FollowFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
     target = factory.SubFactory(ActorFactory)
     actor = factory.SubFactory(ActorFactory)
 
@@ -234,7 +234,7 @@ class DeliveryFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
 
 
 @registry.register
-class LibraryFollowFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
+class LibraryFollowFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
     target = factory.SubFactory(MusicLibraryFactory)
     actor = factory.SubFactory(ActorFactory)
 
diff --git a/api/funkwhale_api/moderation/factories.py b/api/funkwhale_api/moderation/factories.py
index 35256285df023f4cf4d010f3286507d11f934f1c..74a1daa6529ef5775f51d187bab953f420659352 100644
--- a/api/funkwhale_api/moderation/factories.py
+++ b/api/funkwhale_api/moderation/factories.py
@@ -9,7 +9,7 @@ from . import serializers
 
 
 @registry.register
-class InstancePolicyFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
+class InstancePolicyFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
     summary = factory.Faker("paragraph")
     actor = factory.SubFactory(federation_factories.ActorFactory)
     block_all = True
@@ -28,7 +28,7 @@ class InstancePolicyFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
 
 
 @registry.register
-class UserFilterFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
+class UserFilterFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
     user = factory.SubFactory(users_factories.UserFactory)
     target_artist = None
 
@@ -42,7 +42,7 @@ class UserFilterFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
 
 
 @registry.register
-class NoteFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
+class NoteFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
     author = factory.SubFactory(federation_factories.ActorFactory)
     target = None
     summary = factory.Faker("paragraph")
@@ -52,7 +52,7 @@ class NoteFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
 
 
 @registry.register
-class ReportFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
+class ReportFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
     submitter = factory.SubFactory(federation_factories.ActorFactory)
     target = factory.SubFactory(music_factories.ArtistFactory)
     summary = factory.Faker("paragraph")
@@ -77,7 +77,7 @@ class ReportFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
 
 
 @registry.register
-class UserRequestFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
+class UserRequestFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
     submitter = factory.SubFactory(federation_factories.ActorFactory, local=True)
 
     class Meta:
diff --git a/api/requirements/local.txt b/api/requirements/local.txt
index f321c81c6a0f4f4256a9e90649d89e6838b37e87..fa53b23cb8e999bab41c2a34235ab35ee0c065c1 100644
--- a/api/requirements/local.txt
+++ b/api/requirements/local.txt
@@ -1,8 +1,8 @@
 # Local development dependencies go here
 
 coverage~=5.5.0
-django_coverage_plugin~=1.8.0
-factory_boy~=2.12.0
+django_coverage_plugin~=2.0.0
+factory_boy~=3.2.0
 
 # django-debug-toolbar that works with Django 1.5+
 django-debug-toolbar~=3.2.1
diff --git a/api/requirements/test.txt b/api/requirements/test.txt
index 0f217da3d01079c85c82936aade9aa427761b098..0821198f06a362aa627f5353d64f75432eed980a 100644
--- a/api/requirements/test.txt
+++ b/api/requirements/test.txt
@@ -3,10 +3,10 @@
 flake8~=3.9.1
 pytest~=6.2.3
 pytest-cov~=2.12.0
-pytest-django~=4.3.0
+pytest-django~=4.4.0
 pytest-env~=0.6.0
 pytest-mock~=3.6.0
 pytest-randomly~=3.8.0
 pytest-sugar~=0.9.0
 requests-mock~=1.9.0
-faker~=8.2.0
+faker~=8.9.1