Тестирование формы на Джанго - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь запустить тест на форме. Он продолжает возвращаться недействительным. Другие формы работают нормально.

Форма в forms.py:

class SongForm(forms.ModelForm):
class Meta():
    model = Song
    fields = ('title', 'type', 'audio_file', 'description', 'written_by', 'song_text')

Модель, из которой получена форма в models.py:

class Song(models.Model):
title          = models.CharField(max_length=120)
SONG_TYPES     = (
    ('KI', 'Kiirtan'),
    ('PS', 'Prabhat Samgiita'),
    ('BH', 'Bhajan'),
)
type              = models.CharField(max_length=30, choices=SONG_TYPES)
capo              = models.PositiveIntegerField(blank=True, null=True, validators=[MaxValueValidator(12)])
description       = models.TextField(blank=True)
uploader          = models.ForeignKey('Profile', null=True, on_delete=models.SET_NULL)
written_by        = models.CharField(max_length=50, blank=True)      
song_text         = models.TextField(blank=True)
audio_file        = models.FileField(upload_to='songs/')
upload_date       = models.DateField(auto_now=False, auto_now_add=True)
edit_date         = models.DateField(auto_now=True, auto_now_add=False)
chords            = models.ManyToManyField('Chord', related_name='chords', through='ChordIndex')

Тест в tests / test_forms.py:

def test_Song_form_is_valid(self):
    the_data = {
      'title': 'a song',
      'type': 'KI',
      'description': '',
      'audio_file': '103_VASANTA_AJ_JAGALO_04Tsyry.mp3'
      'written_by': '',
      'song_text': '',
    }
    form = SongForm(data=the_data)
    self.assertTrue(form.is_valid())

Форма корректно работает в веб-приложении методом POST. Я даже пытался скопировать значения из действительного POST в тесте, и он все равно не удался!

Я застрял с этим некоторое время ... Есть какие-нибудь подсказки? ??

1 Ответ

0 голосов
/ 07 ноября 2019

Напечатайте значения form.errors. Судя по приведенному выше коду, который вы забыли добавить audio_file, вы можете исправить это, добавив null=True, blank=True в поле audio_file в своих моделях.

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