当前位置: 首页 > news >正文

Django(6)-django项目自动化测试

Django 应用的测试应该写在应用的 tests.py 文件里。测试系统会自动的在所有以 tests 开头的文件里寻找并执行测试代码。
我们的 polls 应用现在有一个小 bug 需要被修复:我们的要求是如果 Question 是在一天之内发布的, Question.was_published_recently() 方法将会返回 True ,然而现在这个方法在 Question 的 pub_date 字段比当前时间还晚时也会返回 True(这是个 Bug)。
https://docs.djangoproject.com/zh-hans/4.2/intro/tutorial05/

polls/test.py

import datetimefrom django.test import TestCase
from django.utils import timezonefrom .models import Questionclass QuestionModelTests(TestCase):def test_was_published_recently_with_future_question(self):"""was_published_recently() returns False for questions whose pub_dateis in the future."""time = timezone.now() + datetime.timedelta(days=30)future_question = Question(pub_date=time)self.assertIs(future_question.was_published_recently(), False)

运行

$ python manage.py test polls

在这里插入图片描述
自动化测试的运行过程:

python manage.py test polls 将会寻找 polls 应用里的测试代码
它找到了 django.test.TestCase 的一个子类
它创建一个特殊的数据库供测试使用
它在类中寻找测试方法——以 test 开头的方法。
在 test_was_published_recently_with_future_question 方法中,它创建了一个 pub_date 值为 30 天后的 Question 实例。
接着使用 assertls() 方法,发现 was_published_recently() 返回了 True,而我们期望它返回 False。
测试系统通知我们哪些测试样例失败了,和造成测试失败的代码所在的行号。

修复缺陷:
polls/models.py

def was_published_recently(self):now = timezone.now()return now - datetime.timedelta(days=1) <= self.pub_date <= now

再次运行测试,通过。
在这里插入图片描述

http://www.lryc.cn/news/139840.html

相关文章:

  • 【AUTOSAR】【CAN通信】CanNm
  • 拼多多淘宝大量缓存商品数据用什么格式提供比较好?
  • 【校招VIP】前端校招考点之页面转换算法
  • android 下载网络文件
  • springboot定时任务:同时使用定时任务和websocket报错
  • CSS3渐变及2D转换
  • 无涯教程-PHP - eregi()函数
  • Spring与Mybatis整合aop整合pageHelper分页插件
  • SSL/CA 证书及其相关证书文件(pem、crt、cer、key、csr)
  • 【JavaSE】内部类
  • Django(2)-编写你的第一个 Django 应用
  • 燃气管网监测系统,24小时守护燃气安全
  • 昌硕科技、世硕电子同步上线法大大电子合同
  • es的索引管理
  • Rust 的四大类型的宏 (元编程)
  • 探索数据湖中的巨兽:Apache Hive分布式SQL计算平台浅度剖析!
  • Node.js 的 Buffer 是什么?一站式了解指南
  • 延时盲注技术:SQL 注入漏洞检测入门指南
  • 【Midjourney电商与平面设计实战】创作效率提升300%
  • URI、URL、URIBuilder、UriBuilder、UriComponentsBuilder说明及基本使用
  • 抓包 - 简要总结 - Windows和Android抓包
  • iOS脱壳技术(二):深入探讨dumpdecrypted工具的高级使用方法
  • 4.RabbitMQ高级特性 幂等 可靠消息 等等
  • ES常见错误总结
  • 35、下载、安装 jdk11 记录,Idea中把项目从 jdk8 换 jdk 11
  • TinyVue - 华为云 OpenTiny 出品的企业级前端 UI 组件库,免费开源,同时支持 Vue2 / Vue3,自带 TinyPro 中后台管理系统
  • ubuntu下自启动设置,为了开机自启动launch文件
  • 脚本:PDF文件批量转换成图片(python3)
  • Spring和mybatis整合
  • 应知道的python基础知识