Django入门三之第一个测试用例

本文介绍了Django入门教程的第三部分,重点在于创建和理解测试用例。首先,通过测试响应状态码200确保视图正确工作。接着,利用`reverse`函数动态获取URL并启动测试服务器验证。当测试套件运行时,可以快速检查所有视图是否返回成功状态。此外,还展示了如何测试URL映射到正确的视图函数,使用`resolve`辅助验证URL配置。通过提高测试的verbosity级别,可以获取更详细的测试执行信息。
摘要由CSDN通过智能技术生成

第一部分:

1.在boards里的test.py操作:是一个非常简单但非常有用的测试用例,我们测试的是请求该URL后返回的响应状态码。状态码200意味着成功。

reverse 接收 url 中的 name 作为第一个参数,我们在代码中就可以通过 reverse() 来获取对应的网址(这个网址可以用来跳转,也可以用来计算相关页面的地址),只要对应的 url 的name不改,就不用改代码中的网址。

from django.core.urlresolvers import reverse
from django.test import TestCase

class HomeTests(TestCase):
    def test_home_view_status_code(self):
        url = reverse('home')
        response = self.client.get(url)
        self.assertEquals(response.status_code, 200)

2.启动python manage.py runserver ,然后在浏览器中请求下主页,可以看到命令端显示如下,其中200代表成功:

如果出现未捕获的异常,语法错误或其他任何情况,Django会返回状态代码500,这意味着是内部服务器错误。现在,想象我们的应用程序有100个视图函数。如果我们为所有视图编写这个简单的测试,只需一个命令,我们就能够测试所有视图是否返回成功代码,因此用户在任何地方都看不到任何错误消息。如果没有自动化测试,我们需要逐一检查每个页面是否有错误。

3.执行Django的测试套件:python manage.py test

第二部分:

现在我们可以测试Django是否在请求的URL的时候返回了正确的视图函数。这也是一个有用的测试,因为随着开发的进展,会发现urls.py 模块可能变得非常庞大而复杂。URL conf 全部是关于解析正则表达式的。有些情况下有一个非常宽容的URL(本来不应该匹配的,却因为正则表达式写的过于宽泛而错误的匹配了),所以Django最终可能返回错误的视图函数。

1.我们可以这样做:

from django.test import TestCase
from django.core.urlresolvers import reverse
from django.urls import resolve
from .views import home

class HomeTests(TestCase):
	def test_home_view_status_code(self):
		url = reverse('home')
		response = self.client.get(url)
		self.assertEquals(response.status_code,200)

	def test_home_url_resolves_home_view(self):
		view = resolve('/')
		self.assertEquals(view.func,home)

在第二个测试中,使用resolve函数,reverse 是resolve的反向 ;作用:从URL得到url_name;

Django使用它来将浏览器发起请求的URL和url.py模块中的URL进行匹配,该测试用于确定URL/返回home视图。

在你调试阶段,可以通过Resolve函数来测试你的网站的URL对应关系是否如你所愿

 

 

2.然后再次执行Django的测试套件:python manage.py test --verbosity=2

要查看有关测试执行时更详细的信息,可将verbosity的级别设置得更高一点:Verbosity决定了将要打印到控制台的通知和调试信息量; 0是无输出,1是正常输出,2是详细输出。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值