======= Update =======Джанго: Тестирование «чистый» метод пользовательского ModelForm с помощью Model-Мама
@JF выдвинул блестящую перспективу для использования от model mommy в ModelForms.
С помощью следующего кода мне удалось автоматически генерировать случайные данные для всех полей модели, за исключением тех, которые я хотел бы манипулировать.
tests.py:
from django.test import TestCase
from houses.forms import ManForm
from houses.models import Man
class ModelsTest(TestCase):
def test_Man(self):
man = mommy.make('Man', age=20)
data = {each_field.name: getattr(man, each_field.name) for each_field in man._meta.fields}
data.update({'age_verification': 20})
form = ManForm(data)
self.assertTrue (form.is_valid())
models.py
from django.db import models
class Man(models.Model):
name = models.CharField(max_length = 12)
age = models.PositiveSmallIntegerField()
forms.py:
from my_app.models import Man
from django import forms
from django.core.exceptions import ValidationError
class ManForm(forms.ModelForm):
age_verification = forms.IntegerField()
def clean(self):
if not self.cleaned_data['age'] == self.cleaned_data['age_verification']:
raise ValidationError("Is this a LIE?")
class Meta:
model = Man
fields = ['name', 'age', 'age_verification']
На данный момент, я проверить это следующим образом:
tests.py:
from django.test import TestCase
from houses.forms import ManForm
class ModelsTest(TestCase):
def test_Man(self):
data = {
'name' = 'John',
'age' = 20,
'ege_verification' = 20,
}
form = ManForm(data)
Есть инструмент, который предоставляет случайные данные для форм? Или ... могу ли я использовать available tools для моделей для этой цели? Поиск документов, поддерживающих Python 3, я не понял, как это можно достичь.
Единственный, который четко предоставляет такую услугу, - Django-Whatever, который не совместим с python3.
Является 'self.cleaned_data' равно на 'None' в' clean() '? Является ли «ValidationError» поднятым? –
@JF Я только что обновил свой вопрос, чтобы отразить главную проблему, которая является генератором случайных данных. Я прошу прощения за то. Модели работают, как ожидалось, проблема без проверки, была моей ошибкой. – raratiru