Нужна помощь в написании юнит-теста в Джанго - PullRequest
0 голосов
/ 01 октября 2019

Всем доброго времени суток.

Мне нужно проверить представление, и я застрял (я новичок в Django). Я прошел все другие тесты url и view, но я действительно не уверен, как написать этот.

Я пытался написать его самостоятельно, я прочитал документы по тестированию, я даже пытался протестировать его, используяmodel_mommy (но у меня есть собственное поле HTML в моих моделях), которое не поддерживается мамой. Я попробовал с мамой Рецепты, тоже без удачи. Я действительно должен сделать этот тест сегодня, это часть задачи, которую мне дали.

вот вид:

class CommentCreateView(CreateView):

    def get(self, request, *args, **kwargs):
        context = {'form': CommentForm()}
        return render(request, 'news/add_comment_to_article.html', context)

    def post(self, request, *args, **kwargs):
        form = CommentForm(request.POST)
        if form.is_valid():
            article = get_object_or_404(Article, pk=kwargs.get('pk'))
            print(article)
            comment = form.save(commit=False)
            comment.post = article
            comment.save()
            return HttpResponseRedirect(reverse('news:article', kwargs={'article_id': article.pk}))
        else:
            form = CommentForm()
            return render(request, 'news/add_comment_to_article.html', {'form': form})

и вот мои модели:

class Article(models.Model):
    title = models.CharField('title', max_length=200, blank=True)
    slug = AutoSlugField(populate_from='title', default="",
                         always_update=True, unique=True)
    author = models.CharField('Author', max_length=200, default="")
    description = HTMLField()
    is_published = models.BooleanField(default=False)
    article_text = HTMLField('Article text', default="")
    pub_date = models.DateTimeField(default=datetime.now, blank=True)
    article_category = models.ForeignKey(Category, on_delete="models.CASCADE", blank=True, null=True, default="")
    my_order = models.PositiveIntegerField(default=0, blank=False, null=False)

    class Meta(object):
        ordering = ['my_order']

    def __str__(self):
        print(self.image.all())
        return self.title


class ArticleImages(models.Model):
    article = models.ForeignKey(Article, on_delete="models.CASCADE", related_name="image")
    image = models.ImageField("image")
    my_order = models.PositiveIntegerField(default=0, blank=False, null=False)

    def image_tag(self):
        return mark_safe('<img src="/media/%s" width="150" height="150" />' % (self.image))

    image_tag.short_description = 'Image'

    class Meta(object):
        ordering = ['my_order']

    def __str__(self):
        return self.image.url


class Comment(models.Model):
    post = models.ForeignKey('Article', on_delete=models.CASCADE, related_name='comments')
    author = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=datetime.now, blank=True)
    approved_comment = models.BooleanField(default=False)

    def approve(self):
        self.approved_comment = True
        self.save()

    def __str__(self):
        return self.text

Я ДЕЙСТВИТЕЛЬНО был бы признателен, если бы кто-то помог мне здесь. Спасибо и хорошего дня!

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