diff --git a/scipost_django/blog/factories.py b/scipost_django/blog/factories.py
new file mode 100644
index 0000000000000000000000000000000000000000..a5138dfaf1dffce51ba57e98608355ecf435cee0
--- /dev/null
+++ b/scipost_django/blog/factories.py
@@ -0,0 +1,34 @@
+__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
+__license__ = "AGPL v3"
+
+from django.utils.text import slugify
+import factory
+
+from common.faker import LazyAwareDate, LazyRandEnum
+from scipost.factories import UserFactory
+
+from .models import BlogPost, Category
+
+
+class CategoryFactory(factory.django.DjangoModelFactory):
+    class Meta:
+        model = Category
+
+    title = factory.Faker("word")
+    slug = factory.LazyAttribute(lambda self: slugify(self.title))
+    description = factory.Faker("paragraph")
+
+
+class BlogPostFactory(factory.django.DjangoModelFactory):
+    class Meta:
+        model = BlogPost
+
+    status = LazyRandEnum(BlogPost.STATUS_CHOICES)
+    title = factory.Faker("sentence")
+    slug = factory.LazyAttribute(lambda self: slugify(self.title))
+    blurb = factory.Faker("paragraph")
+    blurb_image = factory.django.ImageField()
+    blurb_image_caption = factory.Faker("paragraph")
+    body = factory.Faker("paragraphs", nb=3)
+    date_posted = LazyAwareDate("date_this_decade")
+    posted_by = factory.SubFactory(UserFactory)
diff --git a/scipost_django/blog/tests.py b/scipost_django/blog/tests.py
deleted file mode 100644
index ddef03c4df91383dfce15a034976e3a469d77d70..0000000000000000000000000000000000000000
--- a/scipost_django/blog/tests.py
+++ /dev/null
@@ -1,7 +0,0 @@
-__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
-__license__ = "AGPL v3"
-
-
-from django.test import TestCase
-
-# Create your tests here.
diff --git a/scipost_django/blog/tests/__init__.py b/scipost_django/blog/tests/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/scipost_django/blog/tests/test_factories.py b/scipost_django/blog/tests/test_factories.py
new file mode 100644
index 0000000000000000000000000000000000000000..e9733db1107bb20ede06c9bbf7299143a0d9424d
--- /dev/null
+++ b/scipost_django/blog/tests/test_factories.py
@@ -0,0 +1,17 @@
+__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
+__license__ = "AGPL v3"
+
+from django.test import TestCase
+from ..factories import BlogPostFactory, CategoryFactory
+
+
+class TestCategoryFactory(TestCase):
+    def test_can_create_categories(self):
+        category = CategoryFactory()
+        self.assertIsNotNone(category)
+
+
+class TestBlogPostFactory(TestCase):
+    def test_can_create_blog_posts(self):
+        blog_post = BlogPostFactory()
+        self.assertIsNotNone(blog_post)