gpt4 book ai didi

python - 我怎样才能做这样一个典型的单元测试?

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:21 24 4
gpt4 key购买 nike

这是我项目中的一个简单结构:

MyAPP---
note---
__init__.py
views.py
urls.py
test.py
models.py
auth--
...
template---
auth---
login.html
register.html
note---
noteshow.html
media---
css---
...
js---
...
settings.py
urls.py
__init__.py
manage.py

我想做一个单元测试来测试笔记显示页面是否正常工作。

代码:

from django.test import TestCase

class Note(TestCase):
def test_noteshow(self):
response = self.client.get('/note/')
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, '/note/noteshow.html')

问题是我的项目包含一个 auth mod,它会强制取消登录的用户在访问 noteshow.html 时重定向到 login.html 页面。

因此,当我运行我的单元测试时,在 bash 中它引发了一个故障,即 response.status_code 始终是 302 而不是 200。

好吧,虽然通过这个结果我可以检查 auth mod 是否运行良好,它不像我想要的那样。

好的,问题是我如何进行另一个单元测试来检查我的 noteshow.template 是否被使用?

谢谢大家。

django 版本:1.1.1

python 版本:2.6.4

为 MAC 操作系统使用 Eclipse

最佳答案

只需为每个测试登录一个用户。执行此操作的最佳方法是使用 setUp() 方法来创建客户端、创建用户,然后让用户登录。还可以使用 tearDown() 方法反过来(注销用户并删除用户)。

方法 setUp()tearDown() 会为测试集中的每个测试自动运行。

它看起来像这样:

class Note(TestCase):
def setUp(self):
self.client = Client()
self.new_user = User.objects.create_user('blah', 'blah@blah.com', 'blah')
self.new_user.save()
self.client.login(username='blah', password='blah')

def tearDown(self):
self.client.logout()
self.new_user.delete()

def test_noteshow(self):
response = self.client.get('/note/')
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, '/note/noteshow.html')

关于python - 我怎样才能做这样一个典型的单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2800179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com