我正在读取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仅出于测试目的添加了虚拟模型。我看不到该模型迁移如何执行。可能在后台进行了很多操作。我的问题是如何在测试数据库中创建此模型?
答案 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