Мне нужно проверить свою базу данных без добавления или удаления элементов. Для этого я создал приспособление. Загрузка прибора, кажется, хорошо, по крайней мере, это не дает никаких ошибок. Теперь, как мне сказать, чтобы тестовые функции взаимодействовали с тестовой базой данных вместо реальной базы данных. Кроме того, как я могу распространить эту информацию на тестируемые функции?
Это мой текущий код:
"""Module to test upload app."""
import os
import wave
from django.test import TestCase, Client
from django.urls import reverse, resolve
from equestria.settings import BASE_DIR
from .views import UploadProjectView
from .models import File
from django.core.management import call_command
from scripts.models import Project
from django.core.files.uploadedfile import SimpleUploadedFile
class TestUpload(TestCase):
"""Test the upload app."""
fixtures = ['equestria/upload/db.json']
def setUp(self):
self.project = Project.objects.all()[0]
self.url = reverse('upload:upload_project', args=[self.project])
self.client = Client()
def test_upload_url_resolves(self):
self.assertEquals( resolve( self.url ).func.view_class, UploadProjectView)
def test_redirect_before_auth(self):
response = self.client.get(self.url, follow = True)
redir_url = response.redirect_chain[0][0]
redir_code = response.redirect_chain[0][1]
self.assertRedirects(response,'/accounts/login/?next=/upload/1',status_code=302,
target_status_code=200)
self.assertEqual(redir_code, 302)
self.assertEqual(redir_url, '/accounts/login/?next=/upload/1')
def test_valid_file_ext_upload(self):
self.client.login(username='test', password='secret')
initial_files = len(File.objects.all())
audio_file = wave.open(os.path.join(BASE_DIR, "upload/test_files/test.wav"), "rb")
data = {
'f':audio_file
}
response = self.client.post(self.url, data, format='multipart')
current_files = len(File.objects.all())
print(initial_files)
print(current_files)
self.assertEqual(initial_files + 1, current_files)
self.assertEqual(response.status_code, 200)
Все тесты выполняются очень хорошо, кроме self.assertEqual(initial_files + 1, current_files)
. Текущая запись settings.py для базы данных в настоящее время
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": os.path.join(BASE_DIR, "db.sqlite3"),
'TEST': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'test.db',
},
}
}
Я добавил объект TEST, потому что он был рекомендован мне без объяснения того, что он делает.
Как мне сообщить тестовый класс для использования БД, созданной с помощью прибора? Что делает объект TEST в настройках?