了解djangorestframwork单元测试中的模型

时间:2018-11-24 19:23:23

标签: django unit-testing django-rest-framework

我正在读取django-rest-framework中过滤器的单元测试。我尝试通过添加上述模型在另一个项目中本地模拟另一个单元测试,但是我的测试失败:django.db.utils.ProgrammingError: relation "blog_post" does not exist

tests.py

from django.test import TestCase
from django.db import models
from rest_framework import filters, serializers


class Post(models.Model):
    title = models.CharField(max_length=20)
    content  = models.TextField(max_length=255)

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = '__all__'

class TestPostFilter(TestCase):
    def setUp(self):
        Post.objects.create(title="A post title",content="some post content")

    def test_search(self):
        assert True

我知道要为模型创建相应的数据库表,我们必须运行./manage.py makemigrations blog./manage.py migrate blog,但是上面的example仅出于测试目的添加了虚拟模型。我看不到该模型迁移如何执行。可能在后台进行了很多操作。我的问题是如何在测试数据库中创建此模型?

1 个答案:

答案 0 :(得分:2)

如果您查看tests软件包,则该软件包已设置为Django应用。注意models.py中的tests,最重要的是def pytest_configure(configure)文件中的conftest.py函数。您需要执行相同的操作才能为测试环境定义模型。

https://github.com/encode/django-rest-framework/blob/0e10d32fb122619a7977909536b642d09603192a/tests/models.py https://github.com/encode/django-rest-framework/blob/0e10d32fb122619a7977909536b642d09603192a/tests/conftest.py