Понимание модели в модульных тестах djangorestframwork - PullRequest
0 голосов
/ 24 ноября 2018

Я читал юнит-тест для фильтров в 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, но пример выше добавляет фиктивную модель только для целей тестирования.Я не вижу, как для этой модели выполняются миграции.Вероятно, много происходит в фоновом режиме.У меня вопрос, как эта модель создается в тестовой базе данных?

1 Ответ

0 голосов
/ 24 ноября 2018

Если вы посмотрите на пакет 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...