Я хочу создать несколько тестов в своем приложении, но все время получаю ошибки. Теперь у меня есть информация
ошибки
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
..E
======================================================================
ERROR: setUpClass (comments.tests.test_models.ReplyCommentModelTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Users\madas\OneDrive\Pulpit\Code\git-projects\django_tutek\djangoenv\lib\site-packages\django\test\testcases.py", line 1137, in setUpClass
cls.setUpTestData()
.......
raise TypeError(
TypeError: Tried to update field comments.ReplyComment.author_reply with a model instance, <User: >. Use a value compatible with CharField.
----------------------------------------------------------------------
Ran 2 tests in 0.170s
FAILED (errors=1)
Тесты
from django.test import TestCase
from django.contrib.auth.models import User
from blog.models import Post, get_default_user
from comments.models import Comment, ReplyComment
class CommentModelTest(TestCase):
@classmethod
def setUpTestData(cls):
cls.user = User(first_name='adam', is_staff=True, is_active=True, is_superuser=True)
cls.user.save()
cls.post = Post.objects.create(field='Python', title='Pierwszy post', slug='pierwszy-post', status=1)
cls.post.save()
cls.comment = Comment.objects.create(post=Post.objects.get(title='Pierwszy post'), author='robot', text='ok')
cls.comment.save()
def setUp(self):
self.post = Post.objects.get(title='Pierwszy post')
self.comment = Comment.objects.get(id=1)
def test_str(self):
self.assertEqual(self.comment.text, 'ok')
def test_approve(self):
self.assertFalse(self.comment.is_approved)
self.comment.is_approved = True
self.assertTrue(self.comment.is_approved)
class ReplyCommentModelTest(TestCase):
@classmethod
def setUpTestData(cls):
cls.user = User(first_name='adam', is_staff=True, is_active=True, is_superuser=True)
cls.user.save()
cls.post = Post.objects.create(field='Python', title='Pierwszy post', slug='pierwszy-post', status=1)
cls.post.save()
cls.comment = Comment.objects.create(post=Post.objects.get(title='Pierwszy post'), author='robot', text='ok')
cls.comment.save()
cls.reply_comment = ReplyComment.objects.create(comment_reply=Comment.objects.get(author='robot'), text_reply='not_ok')
cls.reply_comment.save()
def setUp(self):
self.post = Post.objects.get(title='Pierwszy post')
self.comment = Comment.objects.get(id=1)
self.reply = ReplyComment.objects.get(id=1)
def test_str(self):
self.assertEqual(self.reply.text_reply, 'not ok')
Модели
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from blog import models as blog_models
def get_default_user():
return User.objects.get(is_superuser=True)
class Comment(models.Model):
post = models.ForeignKey(blog_models.Post, on_delete=models.CASCADE, related_name='comments')
author = models.CharField(max_length=10)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
is_approved = models.BooleanField(default=False)
def __str__(self):
return self.text[0:20]
class Meta:
ordering = ['-created_date']
def approve(self):
self.is_approved = True
self.save()
class ReplyComment(models.Model):
comment_reply = models.ForeignKey(Comment, on_delete=models.CASCADE, related_name="replies")
author_reply = models.CharField(default=get_default_user, max_length=10)
text_reply = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.text_reply[0:20]
У вас есть идея, что случилось? Впервые я пишу тесты в django, так что я в замешательстве. Я также пытался использовать приборы, но я получил сообщение об ошибке postgres. Любые предложения приветствуются. Спасибо!