From 955b0a6eadd2e74ca6be3819370bc0720bb17328 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:11:48 +0800 Subject: [PATCH] Update tests.py --- src/DjangoBlog-master/comments/tests.py | 112 +++++++----------------- 1 file changed, 32 insertions(+), 80 deletions(-) diff --git a/src/DjangoBlog-master/comments/tests.py b/src/DjangoBlog-master/comments/tests.py index 2a7f55f..269cdae 100644 --- a/src/DjangoBlog-master/comments/tests.py +++ b/src/DjangoBlog-master/comments/tests.py @@ -1,109 +1,61 @@ -from django.test import Client, RequestFactory, TransactionTestCase -from django.urls import reverse +from django.test import Client, RequestFactory, TransactionTestCase # 导入Django测试相关类 +from django.urls import reverse # 导入reverse函数,用于生成URL -from accounts.models import BlogUser -from blog.models import Category, Article -from comments.models import Comment -from comments.templatetags.comments_tags import * -from djangoblog.utils import get_max_articleid_commentid +from accounts.models import BlogUser # 从accounts应用导入BlogUser模型(用户模型) +from blog.models import Category, Article # 从blog应用导入分类和文章模型 +from comments.models import Comment # 导入评论模型 +from comments.templatetags.comment_tags import * # 导入评论相关的模板标签 +from djangoblog.utils import get_max_articleid_commentid # 导入工具函数 # Create your tests here. -class CommentsTest(TransactionTestCase): - def setUp(self): - self.client = Client() - self.factory = RequestFactory() +class CommentsTest(TransactionTestCase): # 定义评论测试类,继承事务测试类(支持数据库事务回滚) + def setUp(self): # 测试前的初始化方法,每个测试方法执行前都会调用 + self.client = Client() # 创建测试客户端,用于模拟用户请求 + self.factory = RequestFactory() # 创建请求工厂,用于构造请求对象 + + # 配置博客评论设置 from blog.models import BlogSettings value = BlogSettings() - value.comment_need_review = True + value.comment_need_review = True # 设置评论需要审核 value.save() + # 创建超级用户(测试用) self.user = BlogUser.objects.create_superuser( email="liangliangyy1@gmail.com", username="liangliangyy1", password="liangliangyy1") - def update_article_comment_status(self, article): - comments = article.comment_set.all() - for comment in comments: - comment.is_enable = True - comment.save() + def update_article_comment_status(self, article): # 辅助方法:更新文章所有评论为启用状态 + comments = article.comment_set.all() # 获取文章的所有评论 + for comment in comments: # 遍历评论 + comment.is_enable = True # 设置为启用 + comment.save() # 保存更改 - def test_validate_comment(self): + def test_validate_comment(self): # 测试评论验证功能 + # 用户登录 self.client.login(username='liangliangyy1', password='liangliangyy1') + # 创建测试分类 category = Category() category.name = "categoryccc" category.save() + # 创建测试文章 article = Article() article.title = "nicetitleccc" article.body = "nicecontentccc" - article.author = self.user - article.category = category - article.type = 'a' - article.status = 'p' + article.author = self.user # 设置作者为测试用户 + article.category = category # 设置分类 + article.type = 'a' # 文章类型(假设'a'表示普通文章) + article.status = 'p' # 发布状态(假设'p'表示已发布) article.save() + # 生成评论提交的URL comment_url = reverse( 'comments:postcomment', kwargs={ - 'article_id': article.id}) + 'article_id': article.id}) # 传入文章ID参数 - response = self.client.post(comment_url, - { - 'body': '123ffffffffff' - }) - - self.assertEqual(response.status_code, 302) - - article = Article.objects.get(pk=article.pk) - self.assertEqual(len(article.comment_list()), 0) - self.update_article_comment_status(article) - - self.assertEqual(len(article.comment_list()), 1) - - response = self.client.post(comment_url, - { - 'body': '123ffffffffff', - }) - - self.assertEqual(response.status_code, 302) - - article = Article.objects.get(pk=article.pk) - self.update_article_comment_status(article) - self.assertEqual(len(article.comment_list()), 2) - parent_comment_id = article.comment_list()[0].id - - response = self.client.post(comment_url, - { - 'body': ''' - # Title1 - - ```python - import os - ``` - - [url](https://www.lylinux.net/) - - [ddd](http://www.baidu.com) - - - ''', - 'parent_comment_id': parent_comment_id - }) - - self.assertEqual(response.status_code, 302) - self.update_article_comment_status(article) - article = Article.objects.get(pk=article.pk) - self.assertEqual(len(article.comment_list()), 3) - comment = Comment.objects.get(id=parent_comment_id) - tree = parse_commenttree(article.comment_list(), comment) - self.assertEqual(len(tree), 1) - data = show_comment_item(comment, True) - self.assertIsNotNone(data) - s = get_max_articleid_commentid() - self.assertIsNotNone(s) - - from comments.utils import send_comment_email - send_comment_email(comment) + # 发送评论提交请求(代码不完整,后续应补充POST数据和断言) + response = self.client.post(comment_url, \ No newline at end of file