django单独测试model方法

python 复制代码
# myapp/models.py

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=200)
    published_date = models.DateField()
    isbn = models.CharField(max_length=13)

    def __str__(self):
        return self.title

    def is_published(self):
        return self.published_date <= timezone.now().date()

我们有一个Book 模型,并且你希望分别测试每个方法。

python 复制代码
# myapp/tests.py

from django.test import TestCase
from django.utils import timezone
from .models import Book
from datetime import timedelta

class BookModelTest(TestCase):
    def setUp(self):
        # 创建一个用于测试的样例书籍实例
        self.book = Book.objects.create(
            title="测试书籍",
            author="作者名字",
            published_date=timezone.now() - timedelta(days=1),
            isbn="1234567890123"
        )

    def test_is_published_true(self):
        # 测试 is_published 方法,当书籍已出版时
        self.assertTrue(self.book.is_published())

    def test_is_published_false(self):
        # 创建一本具有未来出版日期的书籍
        future_book = Book.objects.create(
            title="未来书籍",
            author="作者名字",
            published_date=timezone.now() + timedelta(days=1),
            isbn="9876543210987"
        )
        # 测试 is_published 方法,当书籍尚未出版时
        self.assertFalse(future_book.is_published())

    def test_string_representation(self):
        # 测试 Book 模型的 __str__ 方法
        self.assertEqual(str(self.book), "测试书籍")

各个测试的解释

  1. test_is_published_true 方法:

    • 测试当书籍的出版日期在过去时,is_published 方法返回 True
  2. test_is_published_false 方法:

    • 为一本未来出版日期的书籍测试 is_published 方法,确保它返回 False
  3. test_string_representation 方法:

    • 测试 __str__ 方法,确认它返回书籍的正确字符串表示形式。

单独运行这些测试

如果你想运行特定的测试,可以在运行 manage.py test 时指定测试方法。例如:

python 复制代码
python manage.py test myapp.tests.BookModelTest.test_is_published_true

这个命令将只运行 test_is_published_true 方法,使你能够隔离并验证模型中单个方法的行为。

如果测试所有方法,运行下面的命令:

python manage.py test myapp

相关推荐
颜酱7 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
喵手7 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934737 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy7 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
肖永威9 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ9 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
枷锁—sha9 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Coder_Boy_9 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
abluckyboy9 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
喵手9 小时前
Python爬虫实战:构建各地统计局数据发布板块的自动化索引爬虫(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集数据csv导出·采集各地统计局数据发布数据·统计局数据采集